題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不瘾,又多吃了一個 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下 的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
程序分析:采取逆向思維的方法,從後往前推斷。
1) 設x1為前一天桃子數,設x2為第二天桃子數, 則:
x2=x1/2-1, x1=(x2+1)*2
x3=x2/2-1, x2=(x3+1)*2
以此類推: x前=(x後+1)*2
2) 從第10天可以類推到第1天,是一個循環過程。
程序源代碼:
// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鳥教程. All rights reserved.
//
#include <stdio.h>
#include <stdlib.h>
int main(){
int day, x1 = 0, x2;
day=9;
x2=1;
while(day>0) {
x1=(x2+1)*2; // 第一天的桃子數是第2天桃子數加1後的2倍
x2=x1;
day--;
}
printf("總數為 %d\n",x1);
return 0;
}
以上實例輸出結果為:
總數為 1534