在一行中调用3个递归

Calling 3 recursions in one line?

本文关键字:调用 3个 递归 一行      更新时间:2023-10-16

我是C++编程的新手,不久前我开始学习递归函数。所以我的问题是,这能用递归完成吗?

u(n)=n*u(n-1)+(n+1)*u(n-2)+n

是的,这是可以做到的,但这将具有指数复杂性。一个更好的方法是自下而上地计算,并在继续时缓存u的较低值。

是的,前提是您正确处理了基本情况。目前的函数还没有完全定义:您需要显式地声明u(0)u(1)的值(或者其他任何基本情况)。

请注意,函数调用自己两次(使用n-1n-2),而不是像问题标题所示的那样调用三次。

此外,在这种特殊情况下,递归是不必要的,而且是次优的:您可以简单地使用两个变量来保持两个最近的数字,然后迭代进行。有关不同方法的讨论,请参阅ICS 161:算法的设计和分析:斐波那契数;那里的函数形式不同,但所有的讨论都适用于你的函数。