鱼C论坛

 找回密码
 立即注册
查看: 3043|回复: 5

[已解决]编程小白,编程好难啊~~又有py的问题了

[复制链接]
发表于 2018-10-25 22:45:57 | 显示全部楼层 |阅读模式

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

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

x
以下是小甲鱼讲py递归的时候的一段“没用递归方法”求正整数阶乘的代码。
在假设n=1的情况下的我有一些疑问,直接用#标注在以下代码里了。


  1. # 非递归版本
  2. def recursion(n):
  3.     result = n                #如果n=1
  4.     for i in range(1, n):                #range(1,1),试了一下,这东西为空
  5.         result *= i                #【 result = result * 空 】,这是个神马玩意儿????怎么理解这里。
  6.     return result

  7. number = int(input('请输入一个正整数:'))
  8. result = recursion(number)
  9. print('%d 的阶乘是:%d' % (number, result))

  10. '''
  11. 请输入一个正整数:6
  12. 6 的阶乘是:720
  13. '''
复制代码


最佳答案
2018-10-25 23:04:22
空范围所以取不出来元素,所以不循环,result在循环里乘,
所以谁和他乘??
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-10-25 22:48:37 | 显示全部楼层
1不进入循环直接返回,range(1,1)是空范围
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-25 23:00:41 | 显示全部楼层
本帖最后由 hhzczy 于 2018-10-25 23:02 编辑
塔利班 发表于 2018-10-25 22:48
1不进入循环直接返回,range(1,1)是空范围


我知道1不循环,因为1的阶乘就是它自己嘛,没有人跟它乘。
单纯看代码:
我好奇的是第4行range(1, 1)是个“空”
那么for i in range(1, 1): 就表示这个“空的range里边的元素”,这是个什么东西呢?
第5行这个东西还要去和result去乘
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-25 23:04:22 | 显示全部楼层    本楼为最佳答案   
空范围所以取不出来元素,所以不循环,result在循环里乘,
所以谁和他乘??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-25 23:07:51 | 显示全部楼层
本帖最后由 hhzczy 于 2018-10-25 23:08 编辑
塔利班 发表于 2018-10-25 23:04
空范围所以取不出来元素,所以不循环,result在循环里乘,
所以谁和他乘??


也就是:
n=1 的时候,第4、5行都不起作用是吧?
直接卡从第3行跳到6行?

还是说:1*空=1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-25 23:08:33 | 显示全部楼层
hhzczy 发表于 2018-10-25 23:07
也就是:
n=1 的时候,第4、5行都不起作用是吧?
直接卡从第3行跳到6行?

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-22 18:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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