从0开始学习python5:递归学习之阶乘及总结

最近在写制作科赫雪花的例程时,需要用到递归的思想。然而自己看了很久,依旧看不出什么头绪。于是上网搜索了很多资料阅读,稍微理解了递归的思想了,但是感觉依旧生涩难懂,特别是需要自己写递归的代码的时候,更是没有头绪了。为了加深自己对递归的理解,就着手自己写一个阶乘的程序。遇到了很多问题。在这里总结一下。
什么是递归?
知乎有个回答,让人印象深刻(改版):

天下有奇族人姓计,长生不老。一日其孙问其父:吾之18代祖名何?
其父不明,父问其父
其父不明,父问其父
其父不明,父问其父
其父不明,父问其父

晌后,其18代祖回其子:妮泰美
然其回其子:计妮泰美
然其回其子:计妮泰美
然其回其子:计妮泰美
然其回其子:计妮泰美
……
终,计姓末代孙知其18代祖名“计妮泰美”

此奶,递归。

虽是抖机灵的段子,但其深刻写出了递归递进与归来的思想。一层一层递进,直到最后一个知道的人(基例)得到答案,然后再一层一层传出来(经过规律处理),这就是递归。

在慕课网的回答中,他总结递归首先要弄清楚两点:

递归的出口(终止递归的条件,即基例)
递归的表达式(规律)

这个思想对编写出递归的程序很重要。

下面是刚刚写阶乘递归时的错误代码:

错误示例1:

#jiecheng
#f (n)= n! 
def f(n):
    if n==1:
        f(n) = 1
    else:
        f(n) = n*f(n-1)
def main():
    print(f(5))
main()

运行结果:
在这里插入图片描述
错误总结:语法错误。函数理解的错误,误认为代码的编写与数学中写公式一样。

错误示例2:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值