小白一个求大神带
2019-02-20 20:24
#include <stdio.h>
int getPeachNumber(n)
{
int num; //定义所剩桃子数
if(n==10)
{
num=1;
(return 1;) //为什么这个地方的return 1 去掉,结果也对?
}
else
{
num = (getPeachNumber(n+1)+1)*2; //这里是不应该用递归呢?
printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数
}
return num;
}
int main()
{
int num = getPeachNumber(1);
printf("猴子第一天摘了:%d个桃子。\n", num);
return 0;
}
return 1和上句的num=1重复了啊,因为第10天只剩下一个桃子了,再吃就没有了,所以这里num=1或者return 1均为结束递归的条件,只要一个就可以了
不是 num = 1;
return 1;
都有的么?
其实实际上是这样写的
int getPeachNumber(n)
{
int num; //定义所剩桃子数
if(n==10)
{
num = 1;
printf("第%d天所剩桃子%d个\n",n,num);
}
else
{
num = (getPeachNumber(n+1)+1)*2; //这里是不应该用递归呢?
printf("第%d天所剩桃子%d个\n",n,num); //天数,所剩桃子个数
}
return num;
}
这样更符合单一出口的原则,答案是简化了
应该用return 1;只用num=1;结果是不对的。
C语言入门
926020 学习 · 20793 问题
相似问题