C 練習實例21
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下 的一半零一個。到第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.xuhuhu.com on 15/11/9.
//
//
#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