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