C语言题:求结果,要给出步骤解释
intfuns(intn){if(n==1||n==2)return2;elsereturnn+funs(n-1);}main(){intx=4;printf(″S=%d...
int funs(int n)
{ if(n= =1||n= =2) return 2;
else return n+funs(n-1);
}
main()
{ int x=4;
printf(″S=%d\n″,funs(x));
} 展开
{ if(n= =1||n= =2) return 2;
else return n+funs(n-1);
}
main()
{ int x=4;
printf(″S=%d\n″,funs(x));
} 展开
5个回答
展开全部
main函数中printf语句在执行前会调用funs函数,参数=4,调用:funs(4)
funs(n),n=4: 由于条件不成立执行else,在返回值前调用funs(n-1),调用funs(3)
funs(n),n=3: 由于条件不成立执行else,在返回值前调用funs(n-1),调用funs(2)
funs(n),n=2: 由于条件成立执行return 2;返回值是2,回到上一层调用
funs(n),n=3: 调用的funs(2)返回值是2,计算n+funs(2)=3+2=5,返回值是5
funs(n),n=4: 调用的funs(3)返回值是5,计算n+funs(3)=4+5=9,返回值是9
main函数调用的funs(4)返回值是9,最终输出S=9换行
funs(n),n=4: 由于条件不成立执行else,在返回值前调用funs(n-1),调用funs(3)
funs(n),n=3: 由于条件不成立执行else,在返回值前调用funs(n-1),调用funs(2)
funs(n),n=2: 由于条件成立执行return 2;返回值是2,回到上一层调用
funs(n),n=3: 调用的funs(2)返回值是2,计算n+funs(2)=3+2=5,返回值是5
funs(n),n=4: 调用的funs(3)返回值是5,计算n+funs(3)=4+5=9,返回值是9
main函数调用的funs(4)返回值是9,最终输出S=9换行
展开全部
x=4 传入funs函数赋给实参n,
n=4 if的条件不成立,返回4+funs(3)
同理,在funs(3)中if条件不成立,返回4+3+funs(2)
funs(2)中if条件成立,返回4+3+2
所以最后结果为S=9
这其实就是函数的递归调用
n=4 if的条件不成立,返回4+funs(3)
同理,在funs(3)中if条件不成立,返回4+3+funs(2)
funs(2)中if条件成立,返回4+3+2
所以最后结果为S=9
这其实就是函数的递归调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int funs(int n)
{ if(n= =1||n= =2) return 2;
else return n+funs(n-1);
}
main()
{
int x=4;
printf(″S=%d\n″,funs(x));
}
4+funs(3)=4+3+funs(2)=4+3+2=9
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
注意如果N=2时就直接return2。
即 funs(4)= 4+funs(3)=4+3+funs(2)=4+3+2=9
即 funs(4)= 4+funs(3)=4+3+funs(2)=4+3+2=9
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案是2,相当于一个自减的循环。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询