2016 - 2024

感恩一路有你

c语言用递归方法 c语言递归算法深度讲解?

浏览量:2426 时间:2023-04-26 22:21:48 作者:采采

c语言递归算法深度讲解?

使用递归的目的:

简要:简化代码量,方便操作。

递归的优点和缺点:

优势:

递归策略只需要很少的程序来描述解题过程中所需的重复计算,大大减少了程序的代码量。

简短:代码少。

缺点:

递归算法与普通循环等常用算法相比效率较低。所以要尽量避免递归,除非没有更好的算法或者特定的情况下递归更适合。

简而言之:运行效率低。

在简单理解递归之后,让 让我们看一些递归练习来加深我们的理解:

1.斐波纳契数列

斐波那契数列,也叫黄金分割数列,是指这样的数列:0,1,1,2,3,5,8,13,21,34,...

数学递归表达式:F(0)0,F(1)1,F(n)F(n-1) F(n-2)(n ≥ 2,n ∈ N)

核心代码的突破点:F(0)0,F(1)1,F(n)F(n-1) F(n-2)(n ≥ 2,n ∈ N)。

问题:求第n个斐波那契数列。

输入:输入整数n,表示斐波那契数列的第n项(0≤n≤20)。

输出:输出一个表示斐波那契数列第n个值的整数。

示例:

输入:3

输出:2

递归实现:

#包含ltstdio.hgt

int fibonacci(int n)

{

if(n lt 2)

{ return 1 }

其他

{ return Fibonacci(n-1)Fibonacci(n-2)}

}

int main()

{int n// item n

扫描f(#34%d#34,ampn)

printf(#34%d

#34,fibonacci(n))//第n个fibonacci序列的值

返回0

}

如何将C语言的递归学好?

说实话,除了贪婪算法、动态规划等算法更容易使用递归之外,最好不要使用递归。首先,递归代价太大。其次,C语言是一种过程化语言,从上到下一步一步的执行,所以使用迭代可以更好的理解逻辑。如果你坚持学习递归的艺术(没错,优秀的递归就是艺术的体现),那就学习函数式语言吧。推荐lisp。

递归的应用范围很广,掌握它很有意义。

简单地说,递归意味着函数调用自己。

一般可以在一个函数中调用另一个函数。

但当两个函数体完全相同时,就变成递归了。

递归必须有合理有效的退出条件,否则就会变成无限循环,这是不允许的。所以,合理的设计只需设置退出条件。

语言 算法 代码

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。