<谭> 6.10 猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。#include <stdio.h>int main(){ int prev ; /* 前一天 */ int next = 1 ; /* 后一天, 初值为第10天 */ int i; for (i = 9; i >= 1; i--) { prev = (next + 1) * 2 ; /* next=prev-(prev/2+1) */ next = prev; } printf("total=%d\n", prev); return 0;} 运行结果:====================total=1534==================== ★ 此题用倒推的办法,所以注意循环结束的条件。多数情况下用循环为递增方式,本题中用递减方式,因此是: i >= 1 。 分步验证如下:#include <stdio.h>int main(){ int prev ; int next = 1 ; int i; for (i = 9; i >= 1; i--) { prev = (next + 1) * 2 ; printf("i=%d total=%-5d \n", i, prev); next = prev; } return 0;}运行结果: ( i 表示第几天)===============================i=9 total=4i=8 total=10i=7 total=22i=6 total=46i=5 total=94i=4 total=190i=3 total=382i=2 total=766i=1 total=1534===============================

评论