c语言 递归问题求详细解答 第一问输入7的我会 第二问不懂 求解

 我来答
匿名用户
2014-10-07
展开全部
输入16:
求r(16)的值;
根据第一个if判断可以知道:n=1,2,3,4,5时,对应的r(n)=n;
根据for循环机里面的if判断可以知道:当n=6时,r(n-i)不会小于0,所以r(6)=-1;
所以当n=7时,r(n-1)=r(6)<0,所以r(n)=1;
n=8,r(n-2)=r(6)<0,所以r(n)=2;
...
n=10,r(n-4)=r(6)<0,所以r(n)=4;
n=11,r(n-5)=r(6)<0,所以r(n)=5;
当n=12,r(n-i)不会小于0,所以r(12)=-1;
n=13,r(n-1)=r(12)<0,所以r(n)=1;
...
n=16,r(n-4)=r(12)<0,所以r(n)=4;
即当n=16时,r(n)=4;
更多追问追答
追问
为什么不是n=8,r(n–1)=r(7)=1不等于0所以返回-1呢?也就是说为什么要以r(6)=-1为参照 ;而且我包括第二个if的for循环不大明白 这个循环体是到return i;截止吗?(还是说return -1也包括 前面省略了else?)求解蟹蟹qwq
追答
2个问题,回答第一个:因为for循环里的if判断,满足了才会返回,不然会继续判断下一个i是否满足if的条件,所以n=8时,当i=1,r(n-i)=r(7)=1>0,不满足if的条件,所以会判断i=2时,r(n-i)=r(6)=-1<0,满足if条件,所以直接返回,返回的值就是传入参数对应的函数值啦。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式