编程基础概念:递推与递归

递推是通过前面项计算当前项的常见方法,而递归则是程序调用自身解决复杂问题的策略。以斐波那契数列为例,递归在遇到特定出口条件时停止。在计算机内部,递归调用与普通函数调用类似,每次调用都会在栈中创建新空间保存执行上下文,当达到终止条件时逐级返回。
摘要由CSDN通过智能技术生成

===》点我返回目录《===

在进行计算的时候,经常会用到递推的概念。递推是一种用若干步可重复的简运算来描述复杂问题的方法。通常是通过计算前面的一些项来得出序列中的当前项的值。

程序调用自身称为Recursive递归。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

比如对斐波那契数列,我们看这个函数的定义,fib(n)的返回值是fib(n-1)+fib(n-2)。这个概念上很清晰,但是似乎陷入了死循环中无法出来了,所以一定要有一个出口,当n为1和2的时候,我们要给他规定一个值。这就是递归的写法。

你心里肯定会问:那么程序究竟是怎么执行这个递归的呢?自己调用自己总是感觉奇奇怪怪的。

我们要再次打入计算机内部,来看一个普通函数是如何执行的。

一个函数,定义的时候,有一个名字,有输入的参数,有返回的值,内部还要用到很多临时的变量和指令。

计算机在调用一个函数的时候,会在一个叫做“栈”的内存空间为这一次调用划出一片空间来,存放本次函数调用用到的参数及内部变量。假如在执

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值