递归函数设计的三个重要部分
1.重要给递归函数一个明确的语义,即int f(n)
2.实现边界条件时的程序逻辑,即f(1)
3.假设递归函数调用返回结果正确,实现本层函数逻辑
一、HZOJ-184
路飞买了一堆桃子不知道个数,第一天吃了一半的桃子,还不过瘾,又多吃了一个。以后他每天吃剩下的桃子的一半还多一个,到 n天只剩下一个桃子了。路飞想知道一开始买了多少桃子。
输入:一个整数 n(2≤n≤30)
输出:买的桃子的数量。
二、题解
1.引库
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <queue>
#include <stack>
#include <algorithm>
#include <string>
#include <map>
#include <set>
#include <vector>
using namespace std;
2.代码
1.f(n)能吃n天的桃子数量
2.n==1→1
3.(f(n-1)+!)*2=f(n)
int eat(int n){
if(n==1){
return 1;
}
return (eat(n-1)+1)*2;
}
int main(){
int n;
cin>>n;
cout<<eat(n)<<endl;
return 0;
}