搜索
首页 电脑/网络 程序设计

好简单的C语言问题!!!

大哥大姐,请问:在C语言函数调用中,函数的递归调用到底是怎么回事,小弟看了好久就是看不懂!谁能帮忙讲解一下啊!程序是由从上到下一步一步执行的,当在函数的第2次调用时,它还没有执行完第一个函数,它又调用该函数本身,编译系统怎么知道该函数的作用呢?小弟刚开始自学C,在此不耻下问。谢谢了

全部回答

2008-11-15

0 0
    举个特定的例子,其实这个问题用递归效率不高,但我感觉帮助理解很有效:(因为我学的是basic和pascal,对C的语言语法不熟,所以就不写程序了) 斐波那契数列,0,1,1,2,3,5,8,13,21…… 即F(n)=F(n-1)+F(n-2) (n≥3)且已知F(1)=0,F(2)=1 如果要求F(5) 详情见图。
     当第一次调用函数F时,参数为5,那么计算结果需要F(4)和F(3)来提供,于是正在运行的函数F就要重新调用自己,并且用自身的公式重新计算F(4)和F(3),然后到F(4)和F(3)这部时,程序发现还是无法直接得出结论,于是再调用本身的公式F(n)=F(n-1)+F(n-2),再将F(4)分为F(3)和F(2),F(3)分为F(2)和F(1),当所有项均被分解为可以被已知的数据(F(1)=0和F(2)=1)来表示时,所有结果逐级返回,于是最后的结果F(5)就是每一级的结果依次反馈累计的结果。
    简言之,递归的实际意义是将一个大的复杂的问题分解为若干小的,简单的问题,再将小问题分解为更小更简单的问题,最后直到用某些已知条件可以得出小问题的答案为止,再逐级返回。我们写出的递归程序比较简短,但是从这个过程可以看出计算机要花费很多功夫,因此效率不高,很多问题上不如非递归。
    希望你能明白。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
程序设计
电脑装机
操作系统/系统故障
硬件
笔记本电脑
百度
互联网
反病毒
软件
程序设计
程序设计
数据库
C/C++
VB
JAVA相关
C#/.NET
VC++
汇编语言
其他编程语言
举报
举报原因(必选):
取消确定举报