Ode*_*ded 19
递归是一种编程技术,其中方法可以将自身称为其计算的一部分(有时您可以使用多个方法 - 这些方法通常会循环调用彼此).
一个流行的例子是计算斐波纳契数:
public static long fib(int n) {
if (n <= 1) return n;
else return fib(n-1) + fib(n-2);
}
Run Code Online (Sandbox Code Playgroud)
这两个基本组件是基本案例(n<=1在示例中)和递归案例.
在创建递归算法时,您需要考虑基本情况以及如何使用递归情况,您将获得基本情况(否则您最终会得到无限递归并打击堆栈).
基本上,函数是递归的
例如,要计算阶乘:
public static long factorial(int i)
{
// This is the base case
if(i == 0)
{
return 1;
}
else
{
// This reduces the problem to something closer to the base case
return i * factorial(i - 1);
}
}
Run Code Online (Sandbox Code Playgroud)