Python 迭代到递归格式
我发现很难用递归格式编写下面提到的代码(Int到Binary)。请帮我澄清我的疑问,我缺少什么来实现这一转变 代码如下:Python 迭代到递归格式,python,recursion,stack,iteration,Python,Recursion,Stack,Iteration,我发现很难用递归格式编写下面提到的代码(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(s
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))
将问题的迭代解转化为递归解通常毫无帮助。此外,你需要从一开始就进行递归思考。就像每个编程问题一样,您应该从用文字描述解决方案开始。但是现在我们需要用递归的方式来描述它,而不是用迭代的方式 我们首先描述所有基本情况:
n=0
的二进制表示是'0'
n=1
的二进制表示是'1'
然后我们描述递归情况:
数字n
的二进制表示法是n
除以2(不含余数),然后再除以n
mod 2
注意描述是如何自引用的。这就是递归的原因。在递归代码中,您将状态保留在(调用)堆栈上。在迭代代码中,您已经将状态保留在堆栈上。只需删除堆栈并将状态移动到调用堆栈。请记住,递归版本可能会导致大量数据的堆栈溢出