鱼C论坛

 找回密码
 立即注册
查看: 1346|回复: 7

[已解决]Python 递归 函数 问题

[复制链接]
发表于 2018-2-9 17:22:58 | 显示全部楼层 |阅读模式

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

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

x
  1. def recursion(n):
  2.     result = n
  3.     for i in range(1,n):
  4.         print("result -->", result)
  5.         print("i -->", i)
  6.         result *= i
  7.     return result
  8. number = int(input("请输入一个整数:"))
  9. result = recursion(number)
  10. print("%d 的阶乘是: %d" % (number, result))
复制代码

result 我输入 5
我看介绍  递归 1 *2 * 3 * 4 * 5
我打印  result  每次循环的值  看图片  也没显示 出 有  1 *2 * 3 * 4 * 5的过程啊
最佳答案
2018-2-9 17:26:22
首先你的程序不是递归是迭代。
以5为例次序是
5
5*1
5*1*2
5*1*2*3
5*1*2*3*4
132456.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-9 17:26:22 | 显示全部楼层    本楼为最佳答案   
首先你的程序不是递归是迭代。
以5为例次序是
5
5*1
5*1*2
5*1*2*3
5*1*2*3*4
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-9 17:29:24 | 显示全部楼层
结果是一样,要想的得到目标效果,请自己学学怎么修改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-9 18:23:08 | 显示全部楼层
所谓递归,指的是函数在内部调用自身的技巧
你的代码,很明显没有有在函数内部调用函数自身,而是单纯的使用for循环
这里给出一个你的阶乘代码的递归版本
  1. def recursion(i):
  2.         if i == 1:
  3.                 result=i
  4.         else:
  5.                 result=i*recursion(i-1)  #这里调用了函数自身
  6.         print("result -->", result)
  7.         print("i -->", i)
  8.         return result
  9. number = int(input("请输入一个整数:"))
  10. result = recursion(number)
  11. print("%d 的阶乘是: %d" % (number, result))
复制代码


需要注意的是,代码执行的输出结果和你的图片是一样的,但是内部原理是完全不一样的
如果还有什么问题可以提问,如有有什么错误欢迎指正

你可以试试这个代码,感受一下递归是如何工作的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-9 19:21:19 | 显示全部楼层
jkopp 发表于 2018-2-9 18:23
所谓递归,指的是函数在内部调用自身的技巧
你的代码,很明显没有有在函数内部调用函数自身,而是单纯的使 ...

你好 我想问
我上面的代码 我没看出来
5
5*1
5*1*2
5*1*2*3
5*1*2*3*4
这几个步骤是怎么实现的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-9 19:22:31 | 显示全部楼层
塔利班 发表于 2018-2-9 17:29
结果是一样,要想的得到目标效果,请自己学学怎么修改

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

使用道具 举报

 楼主| 发表于 2018-2-9 19:32:58 | 显示全部楼层
  1. def recursion(n):
  2.     result = n
  3.     for i in range(1,n):  # 这里  i 在range 参数中获取值 1,2----n:
  4.         result *= i                # 这里n * i 的值 ////我想说 我 n==5 然后 5 *= 1,再循环就是 result = 5 * 2  ,在循环就是 result = 10 * 3,然后 30*4
  5.     return result                #[color=Red]不应该是1*2*3*4*5 么////[/color]  欸我去  明白了  我以为用了4次5呢  实际上是用了一次5  用笔写了一下
  6. number = int(input("请输入一个整数:"))
  7. result = recursion(number)
  8. print("%d 的阶乘是: %d" % (number, result))
复制代码
微信图片_20180209193241.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-9 19:33:34 | 显示全部楼层
冬雪雪冬 发表于 2018-2-9 17:26
首先你的程序不是递归是迭代。
以5为例次序是
5

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-7 14:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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