c语言用递归方法 c语言递归算法深度讲解?
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。
递归的应用范围很广,掌握它很有意义。
简单地说,递归意味着函数调用自己。
一般可以在一个函数中调用另一个函数。
但当两个函数体完全相同时,就变成递归了。
递归必须有合理有效的退出条件,否则就会变成无限循环,这是不允许的。所以,合理的设计只需设置退出条件。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。