求大神解答小问题
问第5个人多大。(第5个人比第4个人大2岁,第4个人比第3个人大2岁,第3个人比第2个人大2岁,第2个人比第一个人大2岁。已知第一个人10岁。)就是递归函数问题。#include<stdio.h>
#include<math.h>
int agee(int x)
{
int age;
if(x==1)
age=10;
else
age=agee(x-1)+2;
return(age);
}
int main()
{
int age;
age=agee(5);
printf("age=%d\n",age);
}
为什么递归当中一定要有那个else,我把else去掉之后就不能输出了。求大神解答。。~~!
#include<stdio.h>
#include<math.h>
int agee(int x)
{
int age;
if(x==1)
return 10;
else
return agee(x-1)+2;
}
int main()
{
int age;
age=agee(5);
printf("age=%d\n",age);
还用问吗递归就得有终止条件,才能层层返回,你把else去掉了 无论条件如何age=agee(x-1)+2; 这句代码一定会执行,代价就是无限循环 如果没有 else,当X = 1 时,进入 if 里边,然后下一条执行的是 age = agee(x - 1) + 2;然后问题就来了,agee( x - 1) 就是 agee( 0 ) 了,这里就没有任何约束了,因为 0 和负数不会退出 agee() 的,它已经避过了 1;
楼主最好是像一楼一样写。 最讨厌就是出这样没得意义的题目了!本来可以直接走直路的,出题的人非要误导你走曲线!!{:10_249:}
页:
[1]