鱼C论坛

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

递归 求助_待解决

[复制链接]
发表于 2018-3-22 07:36:41 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 涛4091 于 2023-2-23 11:28 编辑

这个有会改的么  改成只返回一次
Screenshot_20180322-072600.png
Screenshot_20180322-072604.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-22 08:52:39 | 显示全部楼层
14行 加个return
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-22 10:06:26 | 显示全部楼层
首先,好好贴代码,编辑器的<>可以贴代码!!!你知道别人把你的代码打一边多么费劲吗
然后谈谈你的代码吧,问题很多啊
根本问题是你的reversed 和print函数 在递归函数的管辖下,所以他们也会执行递归操作。解决办法是把它从定义函数里解放出来。
二是你对reversed函数缺乏了解,你这里想使用的应该是klb.reverse  ,reversed只是创造了一个迭代器。http://blog.csdn.net/sxingming/article/details/51353379    这篇教程可以帮助你。
三是klb.append(x%2)  的位置放在main函数下就不需要klb reverse 了
四是感觉你的态度不认真,你的程序能跑出来就很不错了。应该很小吧
贴一下我该的代码,关于append的位置,希望自己好好琢磨
  1. klb=[]
  2. klb1=[]
  3. def main(x):
  4.     if x==0:
  5.         return x
  6.     else:
  7.         klb.append(x%2)
  8.         main(x//2)
  9. inputs=int(input('ffhhk'))
  10. main(inputs)
  11. klb.reverse()
  12. print(klb)
复制代码


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

使用道具 举报

 楼主| 发表于 2018-3-22 13:23:51 From FishC Mobile | 显示全部楼层
BngThea 发表于 2018-3-22 08:52
14行 加个return

返回谁
返回 klb 不不显示
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-22 18:01:07 From FishC Mobile | 显示全部楼层
吴阿汤 发表于 2018-3-22 10:06
首先,好好贴代码,编辑器的可以贴代码!!!你知道别人把你的代码打一边多么费劲吗
然后谈谈你的代码吧, ...

用手机没法贴你的代码
最后的那个 klb.reversed() 这样他括号里什么也没有 也可以反转吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-22 21:07:50 | 显示全部楼层
涛4091 发表于 2018-3-22 18:01
用手机没法贴你的代码
最后的那个 klb.reversed() 这样他括号里什么也没有 也可以反转吗

list.reverse() :     反向列表中元素,他反转的是前面的list.  是列表的一个方法,参数NA http://www.runoob.com/python3/python3-att-list-reverse.html   这是介绍
举个例子吧。
list1=[1,2,3]
list1.reverse()
list1=[3,2,1]
这是我的代码,你看看吧,简洁一些
  1. list1=[]
  2. def Dec2Bin(n):
  3.     if n==0:
  4.         return ''
  5.     else:
  6.         Dec2Bin(n//2)
  7.         list1.append(n%2)
  8. Dec2Bin(34)
  9. print(list1)
  10.    
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-23 07:11:33 From FishC Mobile | 显示全部楼层
吴阿汤 发表于 2018-3-22 21:07
list.reverse() :     反向列表中元素,他反转的是前面的list.  是列表的一个方法,参数NA http://www.run ...

这样 程序走到Dec2Bin(n//2)然后就进行递归,递归程序就不进行 list.append(n%2)了么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 08:23:33 | 显示全部楼层
本帖最后由 吴阿汤 于 2018-3-23 08:25 编辑

python

python

这是递归的流程图,先递推,然后递归,两个流程。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-23 16:26:19 From FishC Mobile | 显示全部楼层
吴阿汤 发表于 2018-3-23 08:23
这是递归的流程图,先递推,然后递归,两个流程。

只有在递归的时候才会添加吧 递推的时候走不到那一步
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 20:09:47 | 显示全部楼层
涛4091 发表于 2018-3-23 16:26
只有在递归的时候才会添加吧 递推的时候走不到那一步

是这样的。
如果你把append语句放在前面就会走到了,还得需要反转。
放在后面就正好了,可以自己画画示意图感受一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-29 08:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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