第一次计时器使用递归

时间:2018-11-09 01:42:04

标签: java recursion

好的,所以我得到了一个使用递归的项目,这有点难以理解,但是我需要一些帮助。我试图接收用户输入并将其传递到方法f中,然后在行f(n)=2(2n+1)*f(n−1)/n+2上使用递归。然后它应该打印出f(n)等于什么,但是在尝试在方法f中设置该行时给了我一个错误。

该项目的示例运行就像10nf(n) = 58786

import java.util.Scanner;

public class Recursive
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter an integer for n");

        long n = input.nextLong();

        System.out.println("f(n) = " + f(n));
    }

    public static long f(long n)
    {
        if (n <= 0) return (n=1);
        if (n > 0) return (2(2n+1)*f(n−1) n+2 );
    }
}

1 个答案:

答案 0 :(得分:1)

替换

if (n > 0) return (2(2n+1)*f(n−1) n+2 );

使用

return 2 * (2 * n + 1) * f(n - 1) / (n + 2);

在Java中,2n不等于2*n。您需要显式放置该乘法星号。与括号相同。

完整方法是:-

public static long f(long n) {
    if (n <= 0) return 1;
    return 2 * (2 * n + 1) * f(n - 1) / (n + 2);
}

它为输入58786打印10