https://www.luogu.com.cn/problem/P5743
题目描述
一只小猴买了若干个桃子。第一天他刚好吃了这些桃子的一半,又贪嘴多吃了一个;接下来的每一天它都会吃剩余的桃子的一半外加一个。第 n(n\le20)n(n≤20) 天早上起来一看,只剩下 1 个桃子了。请问小猴买了几个桃子?
输入格式
无
输出格式
无
输入输出样例
输入 #1复制
4
输出 #1复制
22
因为今天在制作递归的ppt,在网上看到这样一个题目,所以就顺手写了一下。
根据提意,获得两个条件:
1.第n天,剩下1个桃子;(递归的边界条件)
2.接下来的每一天它都会吃剩余的桃子的一半外加一个。(递归的递推式子)
//递归的写法
#include<bits/stdc++.h>
using namespace std;
int dg(int n, int ans){
if(n == 1)
return ans;
return dg(n-1, (ans+1)*2);
}
int main()
{
int n;
cin >> n;
cout << dg(n, 1);
return 0;
}