ocrosoft 程序设计提高期末复习问题M 递归求猴子吃桃
http://acm.ocrosoft.com/problem.php?cid=1172&pid=12
题目描述
猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半另加一个。到第n天早上想再吃时,就只剩下一个桃子了。求第1天共摘了多少个桃子
输入
n的值
输出
剩下的桃子数量
样例输入
10
样例输出
total=1534
题解:
运用递归的思想,定义的A的函数代表的是第n天开始的时候所有的桃子,x的值从1开始到n结束。
代码:
#include <bits/stdc++.h> using namespace std; int n; int A(int x) { if(x == n) return 1; return 2*(A(x + 1) + 1); } int main() { while(cin>>n) { printf("total=%d\n",A(1)); } return 0; }