网站大量收购闲置独家精品文档,联系QQ:2885784924

斐波拉契数列的C语言描述.ppt

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PPT模板下载:/moban/ 斐波拉契 ——意大利数学家 1202年在《算盘书》中提出了著名的“兔子繁殖问题” 假定第1个月有一对小兔子,第二个月长成大兔子,从出生后第3个月起每月都生一对小兔子,小兔子长到第3个月又生一对小兔子。按此规律繁殖,n个月后将有多少对兔子?(假设兔子是只生不死,每对兔子是一雌一雄) 斐波拉契 国????籍 意大利 职????业 数学家 把不满一个月的兔子称为小兔子,满一个月的兔子都称为大兔子。 兔子繁殖表: 月份 1 2 3 4 5 6 7 小兔子 1 0 1 1 2 3 5 大兔子 0 1 1 2 3 5 8 兔子总数 1 1 2 3 5 8 13 数列:1,1,2,3,5,8,13,21…… 即为著名的斐波拉契数列。 月份 1 2 3 4 5 6 7 小兔子 1 0 1 1 2 3 5 大兔子 0 1 1 2 3 5 8 兔子总数 1 1 2 3 5 8 13 n月大兔子对数=n-1月兔子总数 (上月的小兔子都长成了大兔子) n月小兔子对数=n-1月大兔子对数(上个月的大兔子这月都要生一对小兔子) n月兔子总数=n-1月兔子总数+ n-2月兔子总数 =n-2月兔子总对数 斐波拉契数列的数学描述: 方法一:迭代法 1、迭代算法的基本思想:不断地用新值取代变量的旧值。 迭代公式: f1=f2;f2=f3; 2、固定循环次数,因此可以用for循环实现。 迭代过程: 1 1 2 3 5 …… (3月) f1 f2 + f3 f1 f2 + f1 f2 + f3 f3 (4月) (5月) #includestdio.h int main() { int f1,f2,f3; int i,j; f1=1;f2=1; //第1、2个月的兔子对数 printf(%8d%8d,f1,f2); for(i=3;i=20;i++) { f3=f2+f1; //前两个月的兔子对数的和为这月的兔子对数 if((i-1)%5==0) {printf(\n);} //第行输出5个 printf(%8d,f3); f1=f2; f2=f3; //迭代公式 } printf(\n); return 0; } 程序调用自身的编程技巧称为递归 递归的二要素 fib(6)的递归调用树 fib(6) fib(5) fib(4) fib(3) fib(3) fib(2) fib(2) fib(1) fib(2) fib(1) fib(3) fib(2) fib(4) fib(2) fib(1) #include stdio.h int fib(int n) //递归函数 { if(n==1||n==2) return 1; else return fib(n-1)+fib(n-2); //返回前两个月兔子对数和 } int main() { int i; for (i=1;i=20;i++) { if((i-1)%5==0) printf(\n); //每行输出5个 printf(%5d,fib(i)); //调用递归函数 } printf (\n); return 0; } 用C语言描述兔子繁殖问题(即斐波那契数列): 1、迭代法 2、递归法 思考: 每月的兔子数随着月份增加迅速,数值会越来越大,而整型数据表示数的范围有限,当月份增加到一定数值(如第40个月),结果肯定是错误的,对于这种现象如何在程序中解决? * * 边界条件与递归方程是递归函数的二个要素,递归函数只有具备了这两个要素,才能在有限次计算后得出结果。

文档评论(0)

定制服务方案 + 关注
实名认证
服务提供商

十余年物业管理经验,专注于物业高中低档服务方案,特色服务创意,业主委员会成立流程。

1亿VIP精品文档

相关文档