帮忙找下错误

来源:5-9 递归函数练习

qq_Davidbeckham_03722434

2016-10-12 21:22

为什么会得到8,少的10去哪里了

写回答 关注

3回答

  • JustWannaHugU
    2016-10-12 22:15:22
    已采纳

    细节是魔鬼

    #include <stdio.h> 
    int  getAge(int numPeople)
    {
        int age;
        
        if(numPeople==1)
            age=10;//这里的错误!!
        else
            age =getAge(numPeople-1)+2;
            return age;
    }
    int main() 
    {
        int fifthAge = getAge(5);
        printf("第5个人的年龄是%d岁", fifthAge); 
    	return 0;
    }


    qq_Dav...

    看出来了,找了半小时

    2016-10-13 14:53:20

    共 1 条回复 >

  • 麦小baby
    2016-10-12 22:08:43

    所以当numberpeople==1函数为0,即0+2+2+2+2=8

  • 麦小baby
    2016-10-12 22:05:34

     age=10的意思是是给age这个变量赋值10,即让这个人年龄为十岁。age==10的意思是age的值与10这个数字大小相等,因为还没给age赋值,所以age==10为假,如果先定义int age=10,然后age==10,就为真。系统之所以没有报错是因为C语言保护性不够强,系统认为该假0并没有得到使用不影响,如果是Java这种安全语言就会报错

C语言入门

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

926210 学习 · 20797 问题

查看课程

相似问题