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));
}
展开
 我来答
cdyzxy
2013-09-03 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3666万
展开全部
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换行
夕心木18
2013-09-02 · 超过14用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:32.6万
展开全部
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

这其实就是函数的递归调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JayvynSong
2013-09-02 · TA获得超过390个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:121万
展开全部
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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
constant_var
2013-09-02 · 超过11用户采纳过TA的回答
知道答主
回答量:44
采纳率:100%
帮助的人:25.4万
展开全部
注意如果N=2时就直接return2。
即 funs(4)= 4+funs(3)=4+3+funs(2)=4+3+2=9
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ybb7021311
2013-09-02
知道答主
回答量:20
采纳率:0%
帮助的人:10.2万
展开全部
答案是2,相当于一个自减的循环。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式