猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个。第二天早上又将剩下的桃子吃了一半,还是不过瘾又多
吃了一个。以后每天都吃前一天剩下的一半再加一个。到第10天刚好剩一个。问猴子第一天摘了多少个桃子?
设x,x=x/2-1
最简单使用循环
c#代码-->
int x = 1; for(int day =1;day<10;day++) { x = 2 * (x + 1); } Console.WriteLine(x);
使用递归,代码-->
static int SumPeach(int x) { if (x==10) { return 1; } return 2 * (SumPeach(x + 1) + 1); }
递归次数太对,“变量,参数,返回值”等会压栈溢出,解决办法是用尾递归
尾递归c#代码-->
private static int SumPeach(int sum,int day) { if (day == 10) { return sum; } return SumPeach(2*(sum+1), day+1); }