是否能够递归处理器或编程语言/编译器的功能或两者兼有?

Mat*_*att 2 language-agnostic recursion processor

递归调用函数的能力是处理器或编程语言/编译器固有的能力.也许,两者都需要元素来支持递归?

我一直认为,递归调用函数的能力纯粹是在编程语言中实现的,以及它如何布局其运行时堆栈以及何时何地返回.我假设是正确的还是处理器具有允许递归的特定逻辑?

Car*_*icz 7

处理器只是跳转到代码告诉它的地方.递归绝对是一种语言功能.

它也是一个编译器函数,只要编译器必须实现该语言.但如果没有,我们会认为它被打破了.

最后,当然操作的负担由处理器承担:它必须在堆栈帧上推送上下文和变量,跳转到例程的入口点,执行指令,返回......你知道,处理器做的事情.

  • 一些可能被视为处理器的芯片不够灵活,无法进行递归.您需要一个足够灵活的内存模型来实现堆栈和间接跳转以便返回.例如,较旧的GPU无法递归. (3认同)

Ned*_*der 5

所有现代处理器都能够递归,因为它们具有基于堆栈的函数调用和返回指令.

早期的计算机有一段非常困难的时期.例如,IBM 360布局了代码,以便函数的返回值和局部变量与代码一起.递归调用会破坏先前调用的值.