繁体   English   中英

迭代到递归格式

[英]Iterative to Recursive format

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM