sonichuang 发表于 2018-6-5 18:45:31

Python 关于递归十进制转二进制的代码

下面这段代码,最后else后面返回的n是什么?是f(0)吗?
def f(x):
        n = ''
        if x:
                n = f(x//2)
                return n + str(x%2)
        else:
                return n

Cpig 发表于 2018-6-5 19:32:35

最后的else返回的是空的字符串,x没有参与运算

sonichuang 发表于 2018-6-5 20:43:25

Cpig 发表于 2018-6-5 19:32
最后的else返回的是空的字符串,x没有参与运算

为什么是空的字符串呢?可以解释一下吗?

sonichuang 发表于 2018-6-5 20:54:31

Cpig 发表于 2018-6-5 19:32
最后的else返回的是空的字符串,x没有参与运算

n 在if 里面不是有赋值为f(x//2)吗?为什么返回的是空字符串呢?

thexiosi 发表于 2018-6-5 22:29:08

hi 请参考

def f(x):#以x=0为例
      n = ''
      if x:
                n = f(x//2)
                return n + str(x%2)
      else: #x=0时,走else分支,即:if x 语句未生效,n的值仍为 ''
                return n

>>> f(0)
''

yejiangmin 发表于 2018-6-15 00:46:07

sonichuang 发表于 2018-6-5 20:54
n 在if 里面不是有赋值为f(x//2)吗?为什么返回的是空字符串呢?

如果因为里面点n是局部变量
页: [1]
查看完整版本: Python 关于递归十进制转二进制的代码