Wzzhxy1 发表于 2021-5-23 19:32:11

Python[课后作业] 第023、024讲递归作业求助

def Dec2Bin(dec):
    result = ''
   
    if dec:
      result = Dec2Bin(dec//2)
      return result + str(dec%2)
    else:
      return result

print(Dec2Bin(62))

请问 result = ''的作用是什么?是将result变成字符吗?但是后面result = Dec2Bin(dec//2)又是整形,有点不太懂。
有人能解答一下吗?谢谢{:10_266:} {:10_266:} {:10_243:}

Twilight6 发表于 2021-5-23 19:47:05


result = '' 只是用于初始化 result 变量的,是因为若 if 条件不成立,此时返回 else 里面的内容

若你没有将 result 初始化就会导致 return 返回的是None,而返回 None 会导致有递归的过程 if 的 result + str(dec%2) 拼接会失败

所以需要初始化, 只要 dec 不为 0 都不会执行 else,直到 dec = 0 才执行 else ,这里 else 就相当于设置递归出口

Wzzhxy1 发表于 2021-5-23 20:03:37

Twilight6 发表于 2021-5-23 19:47
result = '' 只是用于初始化 result 变量的,是因为若 if 条件不成立,此时返回 else 里面的内容

若你 ...

能再请教一个问题吗?
result = Dec2Bin(dec//2)
return result + str(dec%2)
不是只有同种类型才可以用‘+’吗?
那为什么‘result = Dec2Bin(dec//2)‘是函数也可以与字符相加?
谢谢解答

Twilight6 发表于 2021-5-23 20:04:49

Wzzhxy1 发表于 2021-5-23 20:03
能再请教一个问题吗?

不是只有同种类型才可以用‘+’吗?




调用了函数,是将函数的返回结果赋值给了 result

因为返回结果就是字符串,所以 用 + 号 是在拼接两个字符串

Wzzhxy1 发表于 2021-5-23 20:18:04

Twilight6 发表于 2021-5-23 20:04
调用了函数,是将函数的返回结果赋值给了 result

因为返回结果就是字符串,所以 用 + 号 是在拼 ...

那为什么函数返回结果是字符串?
谢谢

Twilight6 发表于 2021-5-23 20:23:20

Wzzhxy1 发表于 2021-5-23 20:18
那为什么函数返回结果是字符串?
谢谢


if 返回 result + str(dec%2),而这里的 result 是进行递归了,递归最后出口在 dec = 0 时候,也就是不符合 if 执行 else 所以最终返回的还是字符串

else 返回 result ,函数开始时就初始化为字符串,所以返回 result 也肯定是字符串

Wzzhxy1 发表于 2021-5-23 20:33:15

Twilight6 发表于 2021-5-23 20:23
if 返回 result + str(dec%2),而这里的 result 是进行递归了,递归最后出口在 dec = 0 时候,也就是不 ...

谢谢耐心讲解,懂了!!!!!!!!!!!!
页: [1]
查看完整版本: Python[课后作业] 第023、024讲递归作业求助