发表于: 2017-08-25 23:44:02

2 943


【今日完成】

今天主要是准备任务五的提交,所以把整个项目梳理了一遍,重要的地方加上了注释。相当于是把代码精心装扮了一下。发现有些地方有点冗杂,也把能简化的简化了,一些多余的代码删除了。理清了每一行代码的逻辑。争取明天能通过师兄的审核。

完成代码的修正后,看了一下计算机的基本知识(非科班出身,这点比较欠缺)

理清楚了递归与迭代的区别:

递归是一个函数多次调用自己,当调用到某个时刻时,开始收敛。

就比如这个六的阶乘,

第一步是调用6*5的阶乘,

第二步是调用6*5*4的阶乘。

以此推类,最后调用到1的阶乘,此时1的阶乘就是1,那么此时展开到最大,再开始回收。

如果把“阶乘”看成一个函数,这里是在不断调用自己,只不过参数变了而已,

一开始是6!,后面是6*5!,再后面是6*5*4!。。。

最大展开时是6*5*4*3*2*1!,此时1!就是1。

所以变成了6*5*4*3*2*1,然后现在是从右往左计算,

第一步是6*5*4*3*2,

第二步是6*5*4*6,

以此推类,

最后得到结果。





而迭代则不会展开式子。迭代会定义几个参数:1,现在的值,2、计数器、3最大的界限值

这里式子的意思是,当计数器大于界限值时,会返回结果。




从上面两个式子可以看出迭代与递归的区别:

一、递归的计算式是会增长的,而迭代不会。

所以使用递归时要谨慎,试想如果递归个100000!,电脑会使用很长的计算器,一些性能不好的电脑会直接死机。

二、迭代的三个定义完整表述了一个完整描述。

我们是可以在迭代的任何时候停下来的,如果要继续,则提供三个参数,程序依旧会执行。

而递归不行,递归的信息是隐藏的,电脑不会告诉你它已经计算到了哪一步,是在展开式子还是已经在回收式子了。所以如果暂停了递归,那么再开始,又得重头再来一遍。



【今日收获】

搞明白了递归与迭代的区别,并且完善了代码。


【遇到问题】

暂无


【明日计划】

完成任务五!


【任务进度】

无延期风险,明天应该可以完成

http://task.ptteng.com/zentao/project-burn-268.html


返回列表 返回列表
评论

    分享到