青岛企业建设网站企业linux运维是必死之路
青岛企业建设网站企业,linux运维是必死之路,沈阳做网站优化哪家好,砀山做网站的公司什么是递归
在函数内部#xff0c;是可以调用其他函数的。如果一个函数在内部调用自身#xff0c;就称这个函数就是递归函数。举个例子#xff1a;
实现一个可以自定义重复打印你好的函数。
要实现重复打印#xff0c;可能我们立马就会想到使用循环。如果要求不能使用循环呢…什么是递归
在函数内部是可以调用其他函数的。如果一个函数在内部调用自身就称这个函数就是递归函数。举个例子
实现一个可以自定义重复打印你好的函数。
要实现重复打印可能我们立马就会想到使用循环。如果要求不能使用循环呢那我们就可以通过下面的方法来实现。原理很好理解就是不断的调用自身如果前面不加上if条件判断理论上是会陷入死循环的但是实际上递归到一定次数最大递归次数就会报错停止。递归有什么用
知道递归是怎么回事那么递归有什么实际用处嘛或者说有什么独特之处。比如上面的例子用循环就很方便我为什么还要学习递归这种方法呢
递归实际上是一种解决问题的方法将问题分解为更小的子问题直到得到一个足够小的问题可以被很简单的解决。对于非常简单的问题可能我们使用循环就非常方便比如前面的那个案例但是有些问题如果使用循环可能就会非常麻烦或者解决方案很难让人理解清楚里面的逻辑。
因为递归函数是找到最小问题的解决方法然后只要不断使用这个方法就可以解决了所以递归函数的优点是定义简单逻辑清晰。理论上所有的递归函数都可以写成循环的方式但循环的逻辑不如递归清晰。
下面就通过一些案例来实际感受一下。
递归的应用
1.计算阶乘n! 1 x 2 x 3 x ... x n
本案例来源于廖雪峰的网站
factorial(n) n! 1 x 2 x 3 x ... x (n-1) x n (n-1)! x n factorial(n-1) x n
所以factorial(n)可以表示为n x factorial(n-1)只有n1时需要特殊处理。
于是factorial(n)用递归的方式写出来就是在计算机中函数调用是通过栈stack这种数据结构实现的每当进入一个函数调用栈就会加一层栈帧每当函数返回栈就会减一层栈帧。factorial(5)5 * factorial(4)5 * (4 * factorial(3))5 * (4 * (3 * factorial(2)))5 * (4 * (3 * (2 * factorial(1))))5 * (4 * (3 * (2 * 1)))5 * (4 * (3 * 2))5 * (4 * 6)5 * 24120
2.斐波那契数列
列举可以得出011235Fib(n-2)Fib(n-1)Fib(n);除了第一项和第二项都为1外0忽略,需要单独拿出来其它项都满足Fib(n)Fib(n-2)Fib(n-1)模仿Fib函数当i 5的执行过程。函数如果调用自己比较难理解可以看作调用其它函数只不过和自己长的相同而已相同而已。
3.螺旋线
每一次都是前进length长度然后右转长度需要不断的减小直到小于5停止。全文完
教你实现一个gif处理软件下
如何理解python一行代码实现一个爱心字符画
显示进度下载图片
如何使用python实现文本进度条
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89034.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!