tame47 发表于 2020-3-26 23:06:13

24讲课后-递归编写十进制转二进制

代码如下,funIn的部分是递归吗?自己写的代码,看着总觉得跟小甲鱼举例的递归不太一样,但说不出哪里不一样:
def fun(x):
    a = []
    def funIn(): #内嵌函数,闭包
      nonlocal x #后面x //= 2改变了x的值,所以这里要定义为非局部变量
      if x <= 1:
            a.append(str(x % 2)) #改成str是为了后面可以用join把list变成str
      else:
            a.append(str(x % 2))
            x //= 2
            funIn() #递归funIn()
      return a
    b = funIn()
    b.reverse()
    c = ''.join(b) #利用join把list变成str
    return int(c)

sunrise085 发表于 2020-3-26 23:35:55

你这个也是递归,只要在函数内调用函数本身就算是递归。
但是,正常的递归应该是逐层深入,你这个只能算是多次调用同一函数。
给你两个链接,你看看吧。这里面有我写的好几个十进制转二进制的程序,有递归,也有迭代
第一个帖子
第二个帖子
页: [1]
查看完整版本: 24讲课后-递归编写十进制转二进制