【发布时间】:2016-12-20 12:47:29
【问题描述】:
我一直在编写一个问题,要求我 code a modified version of fibonacci.
现在虽然代码已经准备就绪,但它不能正常工作,因为返回的是 int 而不是 long
当以下用作输入时:0 1 10
输出是-9223372036854775807
而不是这个84266613096281243382112
代码如下:
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
static long arr[];
public static long func(int n,long t1, long t2){
arr = new long[n+1];
arr[1]=t1;
arr[2]=t2;
return func(arr,n);
}
public static long func(long[] arr, int n){
if(n==0||n==1||n==2){
return arr[n];
}
if(arr[n]!=0){
return arr[n];
}
arr[n]=(long)(Math.pow(func(arr,n-1),2)+func(arr,n-2));
return arr[n];
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
long t1= s.nextLong();
long t2=s.nextLong();
int n=s.nextInt();
System.out.print(func(n,t1,t2));
}
}
我不是在寻求逻辑方面的帮助,也不是在解决问题。我想知道我哪里出错了,即使我使用 long 数组,返回的答案仍然是一个 int
此外,关于如何处理长数组的任何帮助都会很棒。
【问题讨论】:
-
为什么要将
long转换为int? -
更仔细地查看您的代码,我看不到您将 long 转换为 int 的位置。为什么说“因为 long 到 int 的转换错误”?
-
您在哪里看到了转化?
-
我对您说的“因为将 long 转换为 int 错误”的评论感到困惑。正如你所说,你的代码中没有这样的转换,所以这不是问题。
-
我建议您查看
pow()的文档。它返回一个double。
标签: java arrays long-integer type-conversion fibonacci