猴子摘桃問題?求大神解釋
猴子第一天摘下N個(gè)桃子,當(dāng)時(shí)就吃了一半,還不過癮,就又多吃了一個(gè)。第二天又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天都吃前一天剩下的一半零一個(gè)。到第10天在想吃的時(shí)候就剩一個(gè)桃子了,問第一天共摘下來多少個(gè)桃子?并反向打印每天所剩桃子數(shù)。
猴子第一天摘下N個(gè)桃子,當(dāng)時(shí)就吃了一半,還不過癮,就又多吃了一個(gè)。第二天又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天都吃前一天剩下的一半零一個(gè)。到第10天在想吃的時(shí)候就剩一個(gè)桃子了,問第一天共摘下來多少個(gè)桃子?并反向打印每天所剩桃子數(shù)。
2016-01-14
舉報(bào)
2017-10-31
i=10
s=1
for i in range(10):
? ? i=s+1+1
? ? s=s+i
? ? print(i)
print(s)
? ?
Python?
2016-01-18
首先他是一個(gè)遞歸問題,什么是遞歸。遞歸就是函數(shù)調(diào)用自身。
分析這個(gè)問題,要知道第一天桃子的個(gè)數(shù),就必須要知道第二天桃子的個(gè)數(shù),可以使用一個(gè)遞歸函數(shù)
getPeachnumber(n)
其中當(dāng)n為10的時(shí)候表示的是第十天剩余桃子的個(gè)數(shù)
這時(shí)候我們想要求得第九天的桃子數(shù)?? 題上說第n天的桃子數(shù)是n-1天桃子數(shù)的一半再減一
相當(dāng)于是(第n+1天的桃子數(shù)+1)*2是第n天的桃子數(shù)
所以可構(gòu)建出遞歸函數(shù) num =(getPeachNumber(n+1)+1)*2;
再控制好結(jié)束條件,返回值,就OK了
2016-01-14
#include <stdio.h>
int getPeachNumber(n)
{
??? int num;??? //定義所剩桃子數(shù)
??? if(n==10)
??? {????? ?
?????? return 1;?????? //遞歸結(jié)束條件
??? }
??? else
??? {
??????? num =(getPeachNumber(n+1)+1)*2;?? //這里是不應(yīng)該用遞歸呢?
??????? printf("第%d天所剩桃子%d個(gè)\n", n,num); //天數(shù),所剩桃子個(gè)數(shù)
??? }
??? return num;
}
int main()
{
??? int num = getPeachNumber(1);
??? printf("猴子第一天摘了:%d個(gè)桃子。\n", num);
??? return 0;
}