递归:修订间差异

来自吾萌百科
→‎例子:​ // Edit via Wikiplus
 
(未显示1个用户的4个中间版本)
第1行: 第1行:
'''递归(Recursion)'''是指函数的定义中使用函数自身。
'''递归(Recursion)'''是指函数的定义中使用函数自身。
== 递归与递推的区别 ==
一个实际问题的各种可能情况构成的集合通常称为“状态空间”。
以已知的“问题边界”为起点像“原问题”正向推导的扩展方式就是递推。
以原问题为起点尝试寻找把状态空间缩小到已知的“问题边界”的路线,再通过该路线反向回溯的便利方式就是递归。


== 例子 ==
== 例子 ==
第5行: 第12行:
<syntaxhighlight lang="c" line>
<syntaxhighlight lang="c" line>
int fib(int n) {
int fib(int n) {
if(num < 1)
if (n < 1)
         return 0;
         return 0;
if (n < 3)
if (n < 3)
第12行: 第19行:
}
}
</syntaxhighlight>
</syntaxhighlight>
在此例中,n>=3时,fib函数在计算时调用了自身。
[[Category:计算机]]

2024年7月7日 (日) 15:31的最新版本

递归(Recursion)是指函数的定义中使用函数自身。

递归与递推的区别

一个实际问题的各种可能情况构成的集合通常称为“状态空间”。

以已知的“问题边界”为起点像“原问题”正向推导的扩展方式就是递推。

以原问题为起点尝试寻找把状态空间缩小到已知的“问题边界”的路线,再通过该路线反向回溯的便利方式就是递归。

例子

斐波那契数列

int fib(int n) {
	if (n < 1)
        return 0;
	if (n < 3)
		return 1;
	return fib(n - 1) + fib(n - 2);
}

在此例中,n>=3时,fib函数在计算时调用了自身。