猴子第一天摘下若干個桃子,立即吃了一半,還不過癮就多吃了一個。次日早上又將剩下的桃子吃了一半,仍是不過癮又多c#
吃了一個。之後天天都吃前一天剩下的一半再加一個。到第10天恰好剩一個。問猴子第一天摘了多少個桃子?spa
設x,x=x/2-1code
最簡單使用循環blog
c#代碼-->遞歸
int x = 1; for(int day =1;day<10;day++) { x = 2 * (x + 1); } Console.WriteLine(x);
使用遞歸,代碼-->it
static int SumPeach(int x) { if (x==10) { return 1; } return 2 * (SumPeach(x + 1) + 1); }
遞歸次數太對,「變量,參數,返回值」等會壓棧溢出,解決辦法是用尾遞歸class
尾遞歸c#代碼-->變量
private static int SumPeach(int sum,int day) { if (day == 10) { return sum; } return SumPeach(2*(sum+1), day+1); }