递推算法&递归算法

本文探讨了初学者可能混淆的递推算法与递归算法的区别。递推算法通过已知条件直接得出结果,效率相对较高;递归算法则通过不断分解问题至边界值解决。以斐波那契数列为实例,展示了两种算法的应用。在编程实践中,应根据情况选择使用递推或递归以优化效率。
摘要由CSDN通过智能技术生成

对与初学者来说,是不是觉得这两种方法都差不多呢?不知道它们之间有什么区别,今天我们就一起来探讨它们之间的区别。

递推算法:

是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法。

递归算法:

在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。

区别:

相对于递归算法,递推算法免除了数据进出栈的过程,也就是说,不需要函数不断的向边界值靠拢,而直接从边界出发,直到求出函数值.
比如阶乘函数:f(n)=n*f(n-1)
在f(3)的运算过程中,递归的数据流动过程如下:
f(3){f(i)=f(i-1)*i}–>f(2)–>f(1)–>f(0){f(0)=1}–>f(1)–>f(2)–f(3){f(3)=6}
而递推如下:
f(0)–>f(1)–>f(2)–>f(3)
由此可见,递推的效率要高一些,在可能的情况下应尽量使用递推.但是递归作为比较基础的算法,它的作用不能忽视.所以,在把握这两种算法的时候应该特别注意。

例子:斐波那契数列

递推:

#include <iostream>

using namespace std;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值