c语言函数递归调用.docx
《c语言函数递归调用.docx》由会员分享,可在线阅读,更多相关《c语言函数递归调用.docx(7页珍藏版)》请在第壹文秘上搜索。
1、C语言函数递归调用在调用一个函数的过程中又出现直接或间接地调用该函数本身,这种用法称为函数的递归调用。例如:intf(intX)intx,z;z=f(x);在执行f函数的过程中又要调用f函数return(2+z);在调用函数f的过程中,又要调用f函数(本函数),这是直接调用本函数。如果在调用fl函数过程中要调用f2函数,又在调用f2的数过程中又要调用fl,这就是间接调用本函数。这两种递归调用都是无终正的自身调用,程序中不应出现这种无终止的递归调用,只应出现有限次数的、有终止的递归调用,用if语句来控制,只有在某一条件成立时才继续执行递归调用:否则就不再继续。如n=l;C=IO,没有条件一直调用
2、,有条件把递归调用变已知值,无调用函数,消失了。例:有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁,问第4个学生岁数,他说比第3个学生大2岁。问第3个学生,又说比第2个学生大2岁,问第2个学生,说比第1个学生大2岁。最后问第1个学生,他说是10岁。请问第5个学生多大。每一个学生的年龄都上匕其前1个学生的年龄大2o说明共用一个函数关系。可以用数学公式表述如下:age(n)=10(=1)age(n)=age(n-1)+2(n1)当n1时,不断调用同一个函数,就是一个递归问题。回溯将第5个学生的年龄表示直到第1个学生的年龄。此时age(1)已知等于10,没有可调用函数,出现已知值,不
3、再出现调用。从第1个学生的已知年龄推算出第2个学生的年龄(12岁),一直推算出第5个学生的年龄18岁为止。如果要求递归过程不是无限制进行下去,必须具有一个结束递归过程的条件。就是要出现已知值,不再调用下去。如:age(1)=10,就是使递归结束的条件,出现已知值,不再调用了,也就终止递归了。编写程序:用一个函数来描述上述递归过程:intage(intn)求年龄的递归函数,内有调用自身的函数。intc;if(n=1)c=10Il这里c=age(l),并不等于age(5)elsec=age(n-l)+2;return(c);/c用作存放函数的返回值的变量用一个主函数调用age函数,求得第5个学生的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 函数 递归 调用
