请问为什么我输出的年龄是9?还有 age=tage(5);为什么不能直接写成tage(5)

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

慕运维5055354

2018-09-25 10:53

#include <stdio.h> 

int tage(int n)

{   int age;

    if(n==1)

    age=10;

    else

    return age=2+tage(n-1); 

}


int main() 

{   int age;

    age=tage(5);

    

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

return 0;

}


写回答 关注

2回答

  • Amme
    2018-09-27 23:59:00

    同学,你这样输出的结果应该是零的;

    你的错误在于 没有 把函数调用的 值 返回 给main()函数的变量 age ;


  • Amme
    2018-09-25 13:18:12

    第一个问题,第五行,应该是 return  age=10 ,一个函数调用到n==1 时最后要有返回参数结束调用的运行,改了之后就可以了;

    第二个问题,age=tage(5)的意思是调用函数tage(),把函数返回的参数值赋给age,

    如果你是直接用tage(5)的话,那么只是调用了一个函数,而且函数的返回值你也没有安排一定的储存位置给它,也就是说age并没有被赋值,那么按照自动储存类型,age会被自动初始化为零

    //本人为初学者,一愚之见,仅供参考

    慕运维505...

    #include <stdio.h> int tage(int n) { int age; if(n==1) return age=10; else return age=2+tage(n-1); } int main() { int age; tage(5); printf("第5个人的年龄是%d岁",age); return 0; } 那这样结果为何为54

    2018-09-26 08:00:11

    共 1 条回复 >

C语言入门

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

927002 学习 · 21533 问题

查看课程

相似问题