为了账号安全,请及时绑定邮箱和手机立即绑定

求大神帮忙看一下

#include <stdio.h> 

int getPeopleAge(int n)

{

    int age;    //定义年龄

    if(n == 1)

    {

        return 10;   //递归结束条件

    }

    else

    {

        age = getPeopleAge(n-1)+2; //递归

        printf("第%d个人%d岁\n",n,age); //第几个人,岁数

        return age;

    }

}

int main() 

{

    int age = getPeopleAge(5);

printf("第5个人的年龄是%d岁。\n", age); 

return 0;

}


为什么在 “age = getPeopleAge(n-1)+2; //递归” 中,不能是“age = getPeopleAge(n)+2;”?



正在回答

2 回答

那你的递归意义何在呢?死循环?

0 回复 有任何疑惑可以回复我~
#1

qq_慕娘6287402 提问者

大佬能解释清楚嘛 我就是不懂括号里面n 和 n-1的区别
2019-09-20 回复 有任何疑惑可以回复我~
#2

小小疾飞 回复 qq_慕娘6287402 提问者

好 在age = getPeopleAge(n-1)+2;这一语句中。getPeopleAge(n-1)是调用了 getPeopleAge()这一函数,我们知道自定义函数是有参数这一概念的,那么n-1就是参数。递归,简单来说就是函数自己调用自己,那么不可能无限制调用,在此题中结束条件就是n==1的时候,就不在调用了,懂了没?
2019-09-20 回复 有任何疑惑可以回复我~
#3

qq_慕娘6287402 提问者 回复 小小疾飞

明白了 谢谢
2019-09-24 回复 有任何疑惑可以回复我~

前面那个输出应该不用啊`

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926206    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

求大神帮忙看一下

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信