【问题标题】:Python recursion functionPython递归函数
【发布时间】:2026-01-05 22:20:23
【问题描述】:

我正在尝试取一个数字,对其进行地板除法,直到它变为 0。这必须使用带有基本情况的递归来完成。 例如:

>>>Base(5,2)
2 ##(5//2)
1 ##(2//2)
0 ##(1//2)

这是我目前所拥有的:

def Base(number,base):
    result=1
    if result==0:
        return False
    else:
        result=number//base
        return Base(result,base)

【问题讨论】:

  • 你有两个问题。您一直将结果设置为 1,并且您有一个从未声明过的 n
  • @idjaw 我改了 n。抱歉,我的意思是那里的数字。
  • 太棒了。现在在函数的开头处理result=1。想想当你继续设置result=1 时会发生什么。逐行运行。
  • @idjaw 这是一个很好的观点。由于无法将结果设置为特定数字,我应该如何声明结果?
  • number = number // base 怎么样 :)

标签: python python-3.x math recursion base


【解决方案1】:

我想这就是你要找的东西

def Base(number,base):

        if number==0:
            return False
        else:
            number = number//base
            print(number)
            return Base(number,base)

首先应该删除 using result = 1 ,因为在每个递归调用期间,结果将重新初始化为 1 并且下面的 if 语句将永远不会工作。 您需要做的是继续递归地划分数字,直到它达到 0 并打印 False

希望能解开你的疑惑

【讨论】: