当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

<b>数据构造学习(C++)之递归</b>[VC/C++编程]

赞助商链接



  本文“<b>数据构造学习(C++)之递归</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

看过这样一道题,问,“程序构造化计划的三种底子构造,次序、挑选、循环是不是必须的?”当然,你知道这样一个结论,只要有这三种就充足了;但是能不能更少呢?答案是“可以”,缘由就是递归能代替循环的作用,比方下面的对一个数组里面元素求和的函数:

float rsum (float a[], const int n)
{
if (n <= 0) return 0;
else return rsum(a, n – 1) + a[n – 1];
}

实际上就是:

sum = 0;

for (int i = 0; i < n; i++) sum += a[i];

但实际的情形是,任何的一种语言里面都有循环构造,但不是任何的语言都支持递归;套用一句话,递归是万能的,但没有递归不是万万不能的.但是,我看到目前的某些人,不管什么问题都要递归,明显循环是第一个想到的办法,恰好费尽头脑去探求递归算法.对此,我真的不知道该说什么.

递归是算法吗

常常的看到“递归算法”、“非递归算法”,这种提法没有语义上的问题,并且我自己也这样用——递归的算法.但这也正阐明了,递归不是算法,他是一种思惟,恰是因为某个算法的指导思惟是递归的,所以才被称为递归算法;而一个有递归算法的问题,当你不利用递归作为指导思惟,这样得到的算法就是非递归算法.——而关于循环能处理的问题,都有递归解法,在这个意义上说,循环算法都可以称为非递归算法.

我在这咬文嚼字没什么别的意思,只是想让大家知道,能写出什么样的算法,关键是看你编写算法时的指导思惟.假如一开始就想到了循环、迭代的办法,你再操心耗神去找什么递归算法——即便找到了一种看似“简便”的算法,由于他的低效实际上还是废物——你还在做这种无勤奋干什么?典型的学究陋习.假如你仅仅想到了递归的办法,目前你想用栈来消解掉递归,你做的工作仅仅是把系统做的事自己做了,你又能把效率提高多少?盲目的迷信消解递归就一定能提高效率是无按照的——你做的工作的办法假如不得当的话,乃至还不如系统本来的做法.


  以上是“<b>数据构造学习(C++)之递归</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .