首页 > 解决方案 > 如果我将一个递归调用除以另一个,我会得到一个无限循环吗?

问题描述

我正在尝试用 Java 进行递归,我有这个方法:

public static int recursion(int n) {
    if(n==1) {
        return 2;
    } else {
        int test = (recursion(n-1))/(recursion(n-1));
        return test;
    }
}

如果我用 运行它n = 50,它永远不会打印任何东西,所以我猜递归调用是无限的?有人可以解释为什么吗?

标签: javarecursion

解决方案


它不是无限的,只是巨大的。您将进行大约 2^50 次递归调用。即使每次调用只需要一纳秒(这太低了),这也意味着总运行时间大约为两周。


推荐阅读