前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c语言函数的迭代与递归_递归与迭代

c语言函数的迭代与递归_递归与迭代

作者头像
全栈程序员站长
发布2022-08-18 19:43:29
1.1K0
发布2022-08-18 19:43:29
举报

大家好,又见面了,我是你们的朋友全栈君。

斐波那契数列:

1 1 2 3 5 8 13 21 34 55 …

fb(n) :

1 n <= 2

fb(n-1) + fb(n-2) n > 2

int fb(n)

{

if(n <= 2)

{

return 1;

}

else

{

return fb(n-1)+fb(n-2);

}

}

使用递归需进行,如果递归的深度并不是很深,便可以使用。递归的子问题一定要有解。(即递归一定要有回归条件。)

递归有两个过程:

递推:层层推进,分解问题

回归:层层回归,返回较大问题的解

递归函数的缺陷:

1.对栈的依赖性太高,需要耗费大量的栈空间来实现递推过程

2.逻辑简单,好理解。

只要是函数,都可以自己调用自己,但是,禁止main调用main函数。(即main自己调用自己)(容易产生栈的上溢。)

使用迭代来实现斐波那契数列:

int fb(n)

{

if(n <= 2)

{

return 1;

}

int n1 = 1, n2 = 1, n3 = 0;

int i = 0;

for(i = 3; i <= n; i++)

{

n3 = n1 + n2;

n1 = n2;

n2 = n3;

}

return n3;

}

递归和迭代的区别:

1.什么是递归

是一种算法思想:是将大问题分解成若干个结构相同的子问题,只有解决子问题才能求得大问题的解。我们将这样的算法思想称之为递归。

在C语言中,有一种函数,该函数可以在函数体中调用自己,这样函数称之为递归函数。

递归有两个过程:

递推

回归

2.什么是迭代

迭代是对递归的一种优化,递归将递推的过程交给了计算机,让计算机代替人去分析问题。而迭代将递推(归纳抽象解决方案)的过程交给

了程序员。进而减小了机器在递推过程中对栈的消耗,大大提高了算法效率。

3.递归的特点

1.解放了人

2.对栈的消耗大

3.算法的效率低下,不能过多层的递归

4.迭代的特点

1.需要人去分析迭代过程

2.减小的对栈的开销

3.算法的效率高

5.什么时候使用递归

1.递归层次不多

2.对于栈消耗不是很大时

6.什么时候使用迭代

如果一个问题,可以使用迭代来实现,就尽量使用迭代。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135253.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月3,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档