编程课学习交流收获
7月1日编程课学习交流收获:
递归:
什么是递归?
递归算法是程序中一个过程或函数调用自身的编程技巧及方法。递归作为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件/结束不满足时,递归前进;当边界/结束条件满足时,递归返回。
真是个好东西,大大滴减少了代码量。
递推:
什么是递推?
递推算法是一种用若干步可重复运算来描述复杂问题的方法。递推是序列计算中的一种常用算法。通常是通过计算前面的一些项来得出序列中的指定项的值。
总结
我认为递推和递归算法的不同在于递归是在返回时输出或计算答案,而递推则是在推算时(也可理解为前进时)输出或计算答案。
它们就好像电影《盗梦空间》中一层一层的梦镜一样,一层一层的递进下去。
更直观一些,他们就好比上图一层一层的镜子一样,一直递进,直到结束条件满足时才返回。
其他收获:
收获一:
在洛谷中可以通过题单系统的刷题。
收获二:
可以通过矩阵快速幂的方式提高递推/递归程序的效率。
收获三:
通过头文件“<ctime>”配“cerr<<clock(); ”可以查看程序运行时间。