鱼C论坛

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

[已解决]第24讲 递归问题

[复制链接]
发表于 2018-2-3 13:38:23 | 显示全部楼层 |阅读模式

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

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

x
第24讲 递归问题  题目请看下图



















请看代码:
  1. list1=[]   #全局变量

  2. def get_digits(n):
  3.    
  4.     list1.append(n%10)# 将数字n的个位追加到列表
  5.    
  6.     if len(list1)==len(str(n)): #如果列表的长度和数字n的长度相等,准备return
  7.         
  8.         return print(list1)
  9.     '''if n < 10:
  10.         list1=list1.reverse() #这一部分暂时放过,是有问题的
  11.         print(list1)
  12.     '''
  13.     get_digits(n//10)  #递归,准备添加下一个‘个位’

  14. get_digits(128) #这是我给的数字,超过3位会报错,而且只有3位数时,私吞了最高位;求解释。

复制代码





最佳答案
2018-2-3 13:59:57
本帖最后由 vstia 于 2018-2-3 14:01 编辑

递归进去时,n已经变成了n//10了,条件得改一下。
比如if n==0, 也就是全部除完了

这是问题

这是问题

这是代码

这是代码

这是运行结果

这是运行结果
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-3 13:59:57 | 显示全部楼层    本楼为最佳答案   
本帖最后由 vstia 于 2018-2-3 14:01 编辑

递归进去时,n已经变成了n//10了,条件得改一下。
比如if n==0, 也就是全部除完了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-3 14:43:07 | 显示全部楼层
vstia 发表于 2018-2-3 13:59
递归进去时,n已经变成了n//10了,条件得改一下。
比如if n==0, 也就是全部除完了

感谢提点,因为条件中的 ‘str(n)’ 没有固定,对吧!那再请问下python有没有常量关键字,比如c语言的const这种东西
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-3 14:50:08 | 显示全部楼层
微末非末 发表于 2018-2-3 14:43
感谢提点,因为条件中的 ‘str(n)’ 没有固定,对吧!那再请问下python有没有常量关键字,比如c语言的con ...

对的。
python是没有的,但是你可以自己构建一个constant的类。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-3 14:57:06 | 显示全部楼层
list1 = []  # 全局变量

def get_digits(n):
    list1.append(n % 10)  # 将数字n的个位追加到列表

    if n//10==0:  #
        return print(list1[::-1])
    else:
        get_digits(n // 10)  # 递归,准备添加下一个‘个位’
   
get_digits(1284)  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-3 14:59:16 | 显示全部楼层
还是退出循环条件设置不准确,你试着改成这样: if len(str(n))==1:,这样就完全正确了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-3 15:14:07 | 显示全部楼层
ouyunfu 发表于 2018-2-3 14:57
list1 = []  # 全局变量

def get_digits(n):

感谢,我忘了 切片中还可以加 ‘-1’
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-3 15:15:04 | 显示全部楼层
隨鈊乄鎍慾 发表于 2018-2-3 14:59
还是退出循环条件设置不准确,你试着改成这样: if len(str(n))==1:,这样就完全正确了。

感谢,已经解决了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-7 04:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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