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)
你这个也是递归,只要在函数内调用函数本身就算是递归。
但是,正常的递归应该是逐层深入,你这个只能算是多次调用同一函数。
给你两个链接,你看看吧。这里面有我写的好几个十进制转二进制的程序,有递归,也有迭代
第一个帖子
第二个帖子
页:
[1]