问答详情
源自:5-9 递归函数练习

帮忙找下错误

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

提问者:qq_Davidbeckham_03722434 2016-10-12 21:22

个回答

  • 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;
    }


  • 麦小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这种安全语言就会报错