猴子吃桃问题
C++ 实例
一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了一半,再加上一个;后面每天都是这样吃。到第10天的时候,小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子。
实例
#include <iostream>
using namespace std;
int main()
{
int x, y, n;
for (x=1, n=0; n<9; y=(x+1)*2, x=y, n++);
cout<<"第一天共摘的桃子数量为 "<<x<<endl;
return 0;
}
以上实例输出结果为:
第一天共摘的桃子数量为 1534
C++ 实例
文人墨客
注意 for 循环的次数:
#include <iostream> using namespace std; int main() { int z = 0; for(int i = 1, n=9; n > 0; n--,i=(i+1)*2,z=i) { } cout << z << endl; for(int i = 1, n=10; n > 0; n--,i=(i+1)*2) { z=i; } cout << z << endl; return 0; }文人墨客
使用递归算法,方便又直观:
#include <iostream> using namespace std; int num(int n) { int i; if(n==1) i=1; else i=2*(num(n-1)+1); return i; } int main() { cout<<"桃子一共有:"<<num(10)<<"个"<<endl; return 0; }文人墨客
使用递归可以很好的解决此问题....
#include <iostream> using namespace std; int returnPeach(int day, int peach) { if(day > 1) { peach = peach * 2 + 2; day -= 1; return returnPeach(day, peach); } else { return peach; } } int main(void) { int peach = returnPeach(10,1); cout<<"第一天共摘桃子的数量为:"<<peach<<endl; system("pause"); return 0; }文人墨客
参考方法:
#include <iostream> int main() { for (int x = 1, n = 9; n > 0; n--) { std::cout << "第" << n << "天吃之前有" << (x + 1) * 2 << "个桃子" << std::endl; std::cout << "第" << n << "天吃完后有" << x << "个桃子" << std::endl; x = (x + 1) * 2; } return 0; }