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

c语言函数的迭代与递归_递归与迭代斐波那契数列:11235813213455…fb(n):1n<=2fb(n-1)+fb(n-2)n>2intfb(n){if(n<=2){return1;}else{returnfb(n-1)+fb(n-2);}}使用递归需进行,如果递归的深度并不是很深,便可以使用。递归的子问题一定要有解。(即递归一定要有回归条件。)递归有两个过程…

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

斐波那契数列:

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.net/135253.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python从字符串中提取数字

    1、使用正则表达式,用法如下:##总结##^匹配字符串的开始。##$匹配字符串的结尾。##\b匹配一个单词的边界。##\d匹配任意数字。##\D匹配任意非数字字符。##x?匹配一个可选的x字符(换言之,它匹配1次或者0次x字符)。##x*匹配0次或者多次x字符。##x+匹配1次或者多次x字符。##x{n,m}匹配…

    2022年4月3日
    175
  • pycharm2021怎么使用_第一次打开pycharm2021

    pycharm2021怎么使用_第一次打开pycharm2021Pycharm是一种PythonIDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理,代码跳转,只能提示,自动完成,单元测试、脚本控制。此外,该IDE提供了一些高级功能,用于支持Django框架下的专业Web开发,同时支持GoogleAppEngine,更酷的是Pycharm支持IronPython…

    2022年8月25日
    6
  • 公司各个部门所有英文缩写怎么写_公司有哪几个部门

    公司各个部门所有英文缩写怎么写_公司有哪几个部门总公司:HeadOffice(HO)分公司:BranchOffice(BO)营业部:BusinessOffice(BO)人事部:PersonnelDepartment(PD)人力资源部:HumanResourcesDepartment(HR)总务部:GeneralAffairsDepartment(GAD)财务部:GeneralAcc

    2025年8月19日
    3
  • Atitit.提升api兼容性的方法 v3 q326

    Atitit.提升api兼容性的方法 v3 q326

    2021年9月13日
    81
  • 前端必备技能之如何制作精灵图「建议收藏」

    前端必备技能之如何制作精灵图「建议收藏」为什么要用精灵图?比如京东首页的这些icon,如果每个icon都去请求一个资源。是非常浪费资源的。因为我们浏览器在同一个域名下并发加载的资源(CSS、JS、图片等)数量是有限的。我们可以将这些icon放到一张图片,通过截取这张图片的不同的区域,拿到不同的icon制作一个背景透明的Icon截图你喜欢的logo,最好是正方形。打开ps,使用快速选择工具选择白色区域ctrl+x删除…

    2022年6月3日
    129
  • vue调用微信支付接口_vue获取api数据渲染

    vue调用微信支付接口_vue获取api数据渲染1,下载对应的组件包  cnpminstallweixin-js-sdk2,在vue的main中引入并将其挂在到vue实例上    importwxfrom’weixin-js-sdk’    Vue.prototype.wx=wx3,各个组件中如果需要使用的话  输出一下this.wx就可以知道是否能掉到wx的API了…

    2022年10月3日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号