首页 > 解决方案 > 迭代到递归格式

问题描述

我发现很难以递归格式编写下面提到的代码(Int to 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))

标签: pythonrecursionstackiteration

解决方案


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

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

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

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

然后我们描述递归的情况:

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

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


推荐阅读