java - 为方法编写递归关系

标签 java recursion big-o recurrence relation

我有一些代码,需要为其编写一个递归关系。该代码只是计算 2 的 n 次方。 如有任何帮助,我们将不胜感激。

public static int two(int n) {

     if (n==0) {
       return 1;
     } else if (n%2 == 0) {
       int x = two(n/2);
       return x*x;
     } else { 
       return 2 * two(n-1)
}

最佳答案

函数的表述几乎是递推关系。基本上,您需要做的就是执行变量更改,以便递归中 two 的参数为 n。例如,采用以下斐波那契函数:

public static int fib(n) {
    if (n==0) {
        return 1;
    } else if (n==1) {
        return 1;
    } else {
        return fib(n-1) + fib(n-2);
    }
}

您不会想使用该实现,因为它的效率非常低,但它使编写递归关系变得容易:

fib0=1
fib1=1
fibn+2 = fibn+1 + fibn

对于斐波那契示例,您实际上不需要执行变量的更改。但是,使用 two 函数,可以更轻松地编写关系。

关于java - 为方法编写递归关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3748120/

相关文章:

java - 如何重置 JLabel

java - 如何从带括号的解析树中提取推导规则?

php - 多维数组的递归循环?

java - 如何确定包含优化的递归算法的大 O?

java - 简单java maven项目中的log4j

java - 从 Java 使用 .net WCF 服务

java - 字符串匹配不适用于特殊字符 "/"

将递归 C 函数转换为 ARM 程序集?

algorithm - 比较排序算法的复杂度

algorithm - 在单峰数组中找到第 k 个元素