【发布时间】:2018-08-11 00:42:37
【问题描述】:
意识到递归是我的弱点之一后,我找到了一个网站,可以强制您递归解决简单问题 (https://codestepbystep.com/problem/view/cpp/recursion/digitsSorted?problemsetid=15)
我坚持使用 (digitsSorted, number 5) 的方法如下:您调用一个将数字作为参数传递的函数。如果该数字中的数字按升序排序,则该函数返回 True,否则返回 False。允许重复数字。该函数还应该能够处理负数。单个数字按定义排序。
所以 func(0)、func(112234) 或 func(-345669) 返回 True,但 func(4321) 返回 False,以此类推。
为了强制你使用递归,有一系列的限制:没有循环,没有全局变量,没有日期结构,但是你想要多少变量,你也不能使用字符串来解决它。
我的代码是:
def digitsSorted(x):
if x < 0:
x = x * (-1)
digitsSorted(x)
elif (x/10) < 1:
return True
else:
remainder1 = x % 10
x = (x - remainder1) / 10
remainder2 = x % 10
if remainder1 >= remainder2:
digitsSorted(x)
else:
return False
当我调用该函数时,我只会在参数为单个数字时得到正确答案,否则返回 None。但是我认为代码是正确的,因为当我更改时:
return True
为:
print(True)
return
与“return False”行相同,代码可以正常工作。我只是无法弄清楚问题所在。
提前致谢
【问题讨论】:
-
单步调试时调试器会说什么?
-
你好。我才写了几个星期的代码,所以恐怕我真的不知道如何使用调试器
-
弄清楚如何使用调试器对于复杂代码和了解某些事情发生的原因(例如跟踪和解决错误)非常宝贵
-
感谢您的建议。我刚刚检查了官方文档上的“The Python Debugger”,看起来很吓人!
标签: python-3.x recursion boolean