python - 迭代到递归格式
问题描述
我发现很难以递归格式编写下面提到的代码(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 的二进制表示。
注意描述是如何自我引用的。这就是使其递归的原因。
推荐阅读
- ios - CoreData context returns nil after setting it up
- python - 如何在 3 维中一起过滤图像
- java - 蒙面的EditText不工作android工作室
- firebase - 如何为 Firebase 应用创建长时间运行的用户数据导出?
- jenkins - Jenkins 忽略了同一作业的多个构建触发
- reactjs - 选择未调用的 renderValue 函数 [ReactJS/Material-UI]
- android - 模拟器已经垄断了整个安卓系统
- reactjs - react native) 调用 OnPress 多个函数和参数
- javascript - 显示整个页面导航阴影
- c# - 检测音频和视频输入设备并获取其状态(C# Windows 服务)