python - 这个函数即使不调用自身也是递归的吗?

标签 python recursion

from pythonds.basic.stack import Stack

rStack = Stack()

def toStr(n,base):
    convertString = "0123456789ABCDEF"
    while n > 0:
        if n < base:
            rStack.push(convertString[n])
        else:
            rStack.push(convertString[n % base])
        n = n // base
    res = ""
    while not rStack.isEmpty():
        res = res + str(rStack.pop())
    return res

print(toStr(1345,2))

我指的是 this tutorial 并且还粘贴了上面的代码。该教程说该函数是递归的,但我在任何地方都看不到递归调用,只是一个 while 循环。我错过了什么?

最佳答案

你是对的,这个特定的函数不是递归的。然而,上下文是,在上一张幻灯片中有一个递归函数,而在这张幻灯片中,他们想展示一下它的内部行为。他们后来说:

The previous example [i.e. the one in question - B.] gives us some insight into how Python implements a recursive function call.

所以,是的,标题具有误导性,它应该是扩展递归函数用堆栈模拟递归函数行为或类似的东西。

有人可能会说这个函数在某种意义上采用了递归的方法/策略来解决要解决的问题,但它本身并不是递归的。

关于python - 这个函数即使不调用自身也是递归的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26897208/

相关文章:

python - 查找未被字母字符包围的单词

python - Plotly:如何制作 3D 堆叠直方图?

recursion - 使用递归辅助函数检查素数

c - 用递归删除双向链表中的所有节点

linux - 说说如何在 bash 中创建一个不使用递归的菜单?

python - 使用 SqlAlchemy 执行原始查询(在 SQL-Server 数据库和 Pymssql 上)时,传递的参数无法识别并引发 SQL 错误

python - asyncio - 代码同步执行

Python 3 尝试排除问题

python - Python中如何让递归程序长时间运行不报RunTimeError

haskell - 我的Haskell代码中的堆栈溢出