第8讲B 递归函数_第1页
第8讲B 递归函数_第2页
第8讲B 递归函数_第3页
第8讲B 递归函数_第4页
第8讲B 递归函数_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

递归函数,2012/11/26,一种通过重复将问题分解为同类的子问题从而解决问题的方法,“Thepowerofrecursionevidentlyliesinthepossibilityofdefininganinfinitesetofobjectsbyafinitestatement.Inthesamemanner,aninfinitenumberofcomputationscanbedescribedbyafiniterecursiveprogram,evenifthisprogramcontainsnoexplicitrepetitions.”NiklausWirth,递归,阶乘n!=n*(n-1)!Fibonacci数列f(n)=f(n-1)+f(n-2),什么问题适合递归解决?,函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。,f2函数调用f1函数,函数的递归调用,f函数调用f函数,f1函数调用f2函数,直接调用本函数,间接调用本函数,函数的递归调用,例7.6有5个学生坐在一起问第5个学生多少岁?他说比第4个学生大2岁问第4个学生岁数,他说比第3个学生大2岁问第3个学生,又说比第2个学生大2岁问第2个学生,说比第1个学生大2岁最后问第1个学生,他说是10岁请问第5个学生多大,函数的递归调用,解题思路:要求第个年龄,就必须先知道第个年龄要求第个年龄必须先知道第个年龄第个年龄又取决于第个年龄第个年龄取决于第个年龄每个学生年龄都比其前个学生的年龄大,7.6函数的递归调用,解题思路:age(5)=age(4)+2age(4)=age(3)+2age(3)=age(2)+2age(2)=age(1)+2age(1)=10,age(5)=age(4)+2,age(4)=age(3)+2,age(3)=age(2)+2,age(2)=age(1)+2,age(1)=10,age(2)=12,age(3)=14,age(4)=16,age(5)=18,递归边界,#includeintage(intn);intmain()printf(NO.5,age:%dn,age(5);return0;intage(intn)intc;if(n=1)c=10;elsec=age(n-1)+2;return(c);,age(5)输出age(5),main,c=age(4)+2,age函数n=5,c=age(3)+2,age函数n=4,c=age(1)+2,age函数n=2,c=age(2)+2,age函数n=3,c=10,age函数n=1,age(1)=10,age(2)=12,age(3)=14,age(4)=16,age(5)=18,18,例7.7用递归方法求!。解题思路:求!可以用递推方法:即从开始,乘,再乘一直乘到。递推法的特点是从一个已知的事实(如1!=1)出发,按一定规律推出下一个事实(如2!=1!*2),再从这个新的已知的事实出发,再向下推出一个新的事实(3!=3*2!)。n!=n*(n-1)!。,例7.7用递归方法求!。解题思路:求!也可以用递归方法,即!等于!,而!,!可用下面的递归公式表示:,#includeintfac(intn);intmain()intn=0;inty=0;printf(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论