迭代到递归格式



我发现用递归格式编写下面提到的代码(Int到Binary(很困难。请帮助我消除我的疑虑,我缺少什么来实现这种转变。

这是代码:

class Stack:

def __init__(self):
self.number = []
def push(self, number):
self.number.append(number)
def pop(self):
return self.number.pop()
def is_empty(self):
return self.number == [] 
def int_to_binary(number):
s = Stack()
while number > 0:
remainder = number % 2
s.push(remainder)
number = number // 2
set =''
while not s.is_empty():
set += str(s.pop())
print(set)
print(int_to_binary(243))

查看问题的迭代解决方案并将其转换为递归解决方案通常毫无帮助。Insetad,你需要从一开始就递归地思考。就像每一个编程问题一样,你应该从用文字描述解决方案开始。但现在我们需要用递归的方式来描述它,而不是用迭代的方式。

我们首先描述所有的基本情况:

n = 0的二进制表示是'0'

n = 1的二进制表示是'1'

然后我们描述递归情况:

数字n的二进制表示是n除以2(没有余数(,然后是nmod 2的二进制表示。

注意描述是如何自我引用的。这就是它递归的原因。

最新更新