简明现代魔法 -> C/C++ -> 趣味算法:猴子吃桃问题

趣味算法:猴子吃桃问题

2010-05-26

猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。

C 程序:

#include <stdio.h>
 
int main()
{
	int sum = 1, i;
	int wait;
	for (i = 9; i >= 1; i--)
	{
		sum = (sum + 1) * 2;
	}
	printf("the num of peace are %d\n", sum);

	
	scanf_s("%d", &wait);
	return 0;
}

此题用倒推的办法,所以注意循环结束的条件。多数情况下用循环为递增方式,本题中用递减方式,因此是: i >= 1 。 分步验证如下:

#include <stdio.h>
int main()
{
    int prev ;
    int next = 1 ;
    int i;

	int wait;

    for (i = 9; i >= 1; i--)
    {
        prev = (next + 1) * 2 ;
        printf("i=%d total=%-5d \n", i, prev);
        next = prev;
    }

	scanf_s("%d,&wait");

    return 0;
}

程序运行结果:

i=9 total=4
i=8 total=10
i=7 total=22
i=6 total=46
i=5 total=94
i=4 total=190
i=3 total=382
i=2 total=766
i=1 total=1534
随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们