鱼C论坛

 找回密码
 立即注册
查看: 2245|回复: 9

[已解决]小甲鱼零基础python知识点总结(第22课:函数:递归是神马)

[复制链接]
发表于 2020-4-7 14:52:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 永远的渣滓 于 2020-4-8 10:56 编辑

小甲鱼零基础python知识点总结(第22课)

概念:递归就是函数调用自身的行为
一.设置递归深度:
使用sys模块:
inport sys
sys.setrecursionlimit(深度)
二.迭代与递归:
1.迭代:

  1. def factorial(n):
  2.     result = n
  3.     for i in range(1,n):
  4.         result *= i
  5.     return result
  6. number = int(input('请输入一个整数:'))
  7. result = factorial(number)
复制代码


2.递归:

  1. def factorial(n):
  2.     if n == 1:
  3.         return 1
  4.     else:
  5.         return n * factorial(n-1)
  6. number = int(input('请输入一个整数:'))
  7. result = factorial(number)
  8. print("%d的阶乘是:%d" % (number, result))
复制代码


三.递归的优缺点:
1.优点:
(1)递归的基本思想是把规模大的问题转变成规模小的问题组合,从而简化问题的解决难度(例如汉诺塔游戏)。

(2)有些问题使用递归使得代码简洁易懂(例如你可以很容易的写出前中后序的二叉树遍历的递归算法,但如果要写出相应的非递归算法就不是初学者可以做到的了。)

2.缺点:

(1)由于递归的原理是函数调用自个儿,所以一旦大量的调用函数本身空间和时间消耗是“奢侈的”(当然法拉利也奢侈,但还是很多人趋之若鹜)。

(2)初学者很容易错误的设置了返回条件,导致递归代码无休止调用,最终栈溢出,程序崩溃。

最佳答案
1970-1-1 08:00:00

评分

参与人数 2荣誉 +3 鱼币 +3 贡献 +2 收起 理由
拍死人 + 1 + 1 鱼C有你更精彩^_^
冰河星云 + 2 + 2 + 2 记得下次给我最佳答案哦~~~

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-7 14:57:05 | 显示全部楼层
拍婶 发表于 2020-4-7 14:56
怎么有鱼币???

首贴有
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 15:44:03 | 显示全部楼层
我竟然没抢到

评分

参与人数 1鱼币 +1 收起 理由
永远的渣滓 + 1 你也有今天哈哈哈,送你一个

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 15:45:25 | 显示全部楼层
我也想要

评分

参与人数 1鱼币 +1 收起 理由
永远的渣滓 + 1 给你一个(我也只能发1个),下次早点来,.

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 16:13:49 | 显示全部楼层

订阅一下 https://fishc.com.cn/forum.php?m ... =1689&fromop=my
print('求订阅'*9999999999999999999999999999999999999999999999999999999999999)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 17:34:03 | 显示全部楼层
下次更新提醒我哦~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 17:53:46 | 显示全部楼层
冰河星云 发表于 2020-4-7 17:34
下次更新提醒我哦~~~

ok
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-8 10:39:17 | 显示全部楼层

  1. >>> print('求订阅'*9999999999999999999999999999999999999999999999999999999999999)
  2. Traceback (most recent call last):
  3.   File "<pyshell#0>", line 1, in <module>
  4.     print('求订阅'*9999999999999999999999999999999999999999999999999999999999999)
  5. OverflowError: cannot fit 'int' into an index-sized integer
复制代码

所以,这是不可能的(小声)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 10:49:50 | 显示全部楼层
wuqramy 发表于 2020-4-8 10:39
所以,这是不可能的(小声)

你...你
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-8 10:51:02 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 14:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表