鱼C论坛

 找回密码
 立即注册
查看: 2258|回复: 2

[已解决]作业23-24疑问,递归实在太搞脑子了,请大神帮忙理理思路

[复制链接]
发表于 2016-11-29 00:49:33 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 INFINI 于 2016-11-29 00:52 编辑

递归实在太搞脑子了,请大神帮忙理理思路

01.
  1. def huiwen(x):
  2.     if len(x) <= 1:
  3.         return True
  4.     elif x[0] == x[-1]:
  5.         return huiwen(x[1:-1])
  6.     else:
  7.         return False

  8. txt = input('请输入一句话:')
  9. if huiwen(txt):
  10.     print('您输入的这句话符合回文格式。')
  11. else:
  12.     print('您输入的这句话不符合回文格式。')
复制代码


为什么return huiwen(x[1:-1]) 前这个return必须要呢?有点不好理解。

02.
  1. def Dec2Bin(dec):
  2.     result = ''
  3.    
  4.     if dec:
  5.         result = Dec2Bin(dec//2)
  6.         return result + str(dec%2)
  7.     else:
  8.         return result

  9. print(Dec2Bin(62))
复制代码

  1. def bin_new(x, result=''):
  2.     return '0b' + result[::-1] if not x else bin_new(x // 2, result + str(x % 2))
复制代码


小甲鱼和我的基本差不多啊,为啥我的必须要反转一下呢?
最佳答案
2016-11-29 11:29:09
1、python 函数返回值 return,函数中一定要有return返回值才是完整的函数。如果你没有python 定义函数返回值,那么会得到一个结果是None对象,而None表示没有任何值。
2.LZ的result其实一直处于空的状态,根本没有用上,所以每次都是str(x%2)在前,而小甲鱼老师的是str(x%2)每次都是在后,所以你的需要翻转
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-29 11:29:09 | 显示全部楼层    本楼为最佳答案   
1、python 函数返回值 return,函数中一定要有return返回值才是完整的函数。如果你没有python 定义函数返回值,那么会得到一个结果是None对象,而None表示没有任何值。
2.LZ的result其实一直处于空的状态,根本没有用上,所以每次都是str(x%2)在前,而小甲鱼老师的是str(x%2)每次都是在后,所以你的需要翻转
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-29 17:21:52 | 显示全部楼层
如果不要return,你的函数在这个条件就没有返回值了
str(x%2)楼主放错位置了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-1 02:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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