例题来源:谭浩强《C语言程序设计》第五版:习题4.12
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。到第10天想再吃时,剩下了一个。求第一天共摘了多少桃子?
单纯从数学角度出发,进行逆推,每天的桃子树 :1,4,10,22,46,94,190,382,766,1534。从中可得出An的递推公式An=2*(An-1+1),用编程语言表示为:
//猴子吃桃问题
#include <stdio.h>
//定义两个参数,一个是经过天数,另外一个是所剩个数
int Peach(int n,int a)
{
int s=a;
int i;
for(i=1;i<n;i++)
{
s=(s+1)*2;
}
return s;
}
int main()
{
printf(“一共摘了%d个桃子\n”,Peach(10,1));
return 0;
}
这样便可以解决了。通过数学数列与计算机相结合的方法,解决了很多简单却又重复的工作。不得不说计算机是个很伟大的发明。数学是人类历史上最伟大的学科。
本文解析了经典的猴子吃桃问题,并通过逆推法找到了递推公式。使用C语言编程实现了该问题的解决方案,展示了计算机与数学结合的魅力。
问题&spm=1001.2101.3001.5002&articleId=94062916&d=1&t=3&u=f4752cb2acc740308a6cd8a13ec24c99)
1255

被折叠的 条评论
为什么被折叠?



