JIAYII
2015-09-24 10:38
int cc(n)
{
int age;
if(n==1)
{
age=10;
}
else
{
age=cc(n-1)+2;
return age;
}
}
int main()
{
int age5=cc(5);
printf("第5个人的年龄是%d岁", age5);
return 0;
}
当你加了括号后,括号内的return age 只属于else语句中,这样if语句中就没有return,即n=1时无返还值,即函数cc(1)不知道等于多少。。。。。没有括号时,只有age=getage(n-1)+2属于else语句,return age处于if-else语句之外,执行完if(n=1)或者else语句之后,都会执行return语句,当n=1时,age=10,执行return age,即返还值是10,即cc(1)=10.。。。。。。。
哥们,你第一个程序使用递归有点问题,当n==1的时候cc(1)没返回值,系统默认给其赋值为1,所以你的结果就是1+2+2+2+2 = 9的状态
如果说单纯些递归函数的话第二种肯定好一些,最起码他不会造成函数没有出口
大家帮我看下问题是if和else那里不应该有括号,为什么
#include<stdio.h>
int getage(n)
{
int age;
if(n==1)
age=10;
else
age=getage(n-1)+2;
return age;
}
int main()
{
int age5=getage(5);
printf("第5个人的年龄是%d岁", age5);
return 0;
}
C语言入门
926020 学习 · 20793 问题
相似问题