吃桃子
小明买了一堆桃子,不知道个数,第一天吃了一半的桃子,还不过瘾,又多吃了一个。以后他每天吃剩下的桃子的一半还多一个,到n天只剩下一个桃子了。问:最开始买了多少桃子。
使用递归算法来解决这个问题,我们可以从第 n天剩下 1 个桃子开始,逆推到第 1 天的桃子总数。
可以这样理解:
1.第n天时,只剩下一个桃子
2.第n-1天吃掉了一半多一个,则第n-1天有(1+1)*2个桃子
3.由此可以地推出公式F(x+1)=F(x)/2-1
得出F(x)=(F(x+1)+1)*2,运用函数反推出第一天的桃子即可
注意:n应该是一个全局变量
#include <iostream>
using namespace std;
int n;
int f(int x){
if(x==n){
return 1;
}else{
return(f(x+1)+1)*2;
}
}
int main(){
cin>>n;
cout<<f(1)<<endl;
return 0;
}