Java中改进的Fibonacci
系列的定义方式如下: 给定第n项和第(n+1)项,(n+2)项可通过以下关系计算:, Tn+2=(Tn+1)2+Tn 给定三个整数A、B和N,使级数的前两项(第一项和第二项)分别为A和B,计算级数的第N项 这是我的密码Java中改进的Fibonacci,java,Java,系列的定义方式如下: 给定第n项和第(n+1)项,(n+2)项可通过以下关系计算:, Tn+2=(Tn+1)2+Tn 给定三个整数A、B和N,使级数的前两项(第一项和第二项)分别为A和B,计算级数的第N项 这是我的密码 public static long fibonacciModified(int a, int b, int n){ long[] arr = new long[n]; arr[0] = a; arr[1] = b;
public static long fibonacciModified(int a, int b, int n){
long[] arr = new long[n];
arr[0] = a;
arr[1] = b;
for(int i = 2; i< n; i++){
arr[i] = (long)(Math.pow(arr[i-1], 2) + arr[i-2]);
}
return arr[n-1];
}
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String[] strArray = str.split(" ");
int a = Integer.parseInt(strArray[0]);
int b = Integer.parseInt(strArray[1]);
int n = Integer.parseInt(strArray[2]);
System.out.println(fibonacciModified(a, b, n));
}
公共静态长fibonacciModified(inta,intb,intn){
long[]arr=新长[n];
arr[0]=a;
arr[1]=b;
for(int i=2;i
这段代码中的逻辑错误可能是什么,因为它没有通过大多数测试用例。我没有访问测试用例的权限。非常感谢您的帮助。这里有一种方法可以直接在O(1)中获得N个Fibocanni数 执行主任(1)
快乐编码使用BigInteger,因为您的测试用例未知。这里只使用一个静态示例。始终涵盖代码挑战中的所有情况,例如n=1或n=2,因为您需要为这些情况返回a和b。将n-2传递给方法,因为给定前两个元素,您的第一次运行将计算第三个元素,所以总体上您运行它n-2次。所以当n为0时,我们结束递归
int a = 1;
int b = 1;
int n = 4;
BigInteger result;
if (n == 1) {
result = BigInteger.valueOf(a);
} else if (n == 2) {
result = BigInteger.valueOf(b);
} else {
result = fibonacciModified(BigInteger.valueOf(a), BigInteger.valueOf(b), n - 2);
}
System.out.println(result);
public static BigInteger fibonacciModified(BigInteger a, BigInteger b, int n) {
if (n == 0) {
return b;
} else {
return fibonacciModified(b, ((a.add(BigInteger.ONE)).pow(2)).add(b), n - 1);
}
}
请说得更具体些;是否有错误消息?到底是什么不起作用?你的意思是问题描述中的Tn+2=(Tn+1)^2+Tn吗?我建议先生成你自己的测试用例。此外,如果您有权访问程序的输出,则可以跟踪您获得的输入。for(int i=2;i
int a = 1;
int b = 1;
int n = 4;
BigInteger result;
if (n == 1) {
result = BigInteger.valueOf(a);
} else if (n == 2) {
result = BigInteger.valueOf(b);
} else {
result = fibonacciModified(BigInteger.valueOf(a), BigInteger.valueOf(b), n - 2);
}
System.out.println(result);
public static BigInteger fibonacciModified(BigInteger a, BigInteger b, int n) {
if (n == 0) {
return b;
} else {
return fibonacciModified(b, ((a.add(BigInteger.ONE)).pow(2)).add(b), n - 1);
}
}