慕娘7048410
2016-12-02 11:45
#include <stdio.h>
int getPeachNumber(int n) //这里要定义n,要不编译器会报错!
{
int num;
if(n==10)
{
return 1; (这里的return1是什么意思?)
}
else
{
num = (getPeachNumber(n+1)+1)*2; (为什么会自己加到10而不是更多,因为前面n==10吗,为什么是因为那个?)
printf("第%d天所剩桃子%d个\n", n, num);
}
return num;
}
int main()
{
int num = getPeachNumber(1);
printf("猴子第一天摘了:%d个桃子。\n", num);
return 0;
}
当n=1时 2*(1+getPeachNumber(1+1))
当n=2时 2*(1+getPeachNumber(2+1))
当n=3时 2*(1+getPeachNumber(3+1))
当n=4时 2*(1+getPeachNumber(4+1))
当n=5时 2*(1+getPeachNumber(5+1))
当n=6时 2*(1+getPeachNumber(6+1))
当n=7时 2*(1+getPeachNumber(7+1))
当n=8时 2*(1+getPeachNumber(8+1))
当n=9时 2*(1+getPeachNumber(9+1))
当getPeachNumber(9+1)=getPeachNumber(10)
因为 n=10
return 1;
所以 getPeachNumber(10)=1
为什么会加1
因为(n+1)看成一个整体
所以
当n=9时 2*(1+getPeachNumber(9+1))=4
依次往上推就可得到第一天的;这就是递推的本意
return 1; 表示返回1. 我的理解为:前面n==10 定义啦第十天只有一个桃子,一次往前推n=9、n=8、、、而不是从n=1开始慢慢到n=10.
C语言入门
926210 学习 · 20797 问题
相似问题