请讲讲递归调用的特点和使用

和extern的特点和使用

递归通俗的讲就是一个函数在其代码中反复调用自身。你应该知道菲波纳契数列,这个数列的定义是

f(x)=1 (x=1)
f(x)=2 (x=2)
f(x)=f(x-1)+f(x-2) (x>2)
也就是说从第三项开始的每一项的值都等于是前两项之和。这在数学中叫递推数列--高中数学内容。
如果把它变为一个要求第n个菲波纳契数的代码的话,应该如下所示(为了避免语言不通:)我使用伪代码):

int f(int step)
在这里x为上面所说的x变量,也就是要求的是第x项的值
{
if step=1
{
return 1
}
else if step=2
{
return 2
}
如果求得是第一项和第二项的话,就分别返回1和2,并退出函数

return f(x-1)+f(x-2)
否则的话就返回前面两项的和
}

这里的关键是最后一句。这里函数的返回直又要反过去调用它自身计算前面两项的值,这样就会反复调用,直到x变量在某次调用中变为1和2,返回已知的第一项和第二项的值,在层层返回,最后得出要求的第x项的值

说到本质的话,递归是一段程序的代码反复效用,把程序的参数等变量保存在一个堆栈里,直到到了边界条件以后再层层返回,将堆栈中的数据弹出计算,最后得到结果
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-05-24
递归就是在子函数中又调用这个子函数他自己,知道满足某个条件才能一层层的返回出来
理解起来并不难,你理解一下 数列 里面的 递推公式 是一个道理
extern是申明一个外部变量
简单的说,就是你在一个工程里面可以把程序放到不同的文件中。对于在某个文件中用到的全局变量,另一个文件也要用,就可以用extern来申明,这样的全局变量可以在两个文件之间同享数据,对更高阶的工程化的编程非常有用。本回答被提问者采纳
相似回答