Java 为什么使用整数和双精度?
我有相同函数的两个版本的代码:一个迭代版本和一个递归版本。我想知道为什么返回类型是Java 为什么使用整数和双精度?,java,integer,double,Java,Integer,Double,我有相同函数的两个版本的代码:一个迭代版本和一个递归版本。我想知道为什么返回类型是int。它能给你多少钱?为什么返回类型不能是双精度的 public static int iterative(int n){ int var=1; int var1=1; int var2=1; if (n<=1) { return 1; } for(int i=2;i<=n;i++){ var=var1+var2+1; var2=var1;
int
。它能给你多少钱?为什么返回类型不能是双精度的
public static int iterative(int n){
int var=1;
int var1=1;
int var2=1;
if (n<=1) {
return 1;
}
for(int i=2;i<=n;i++){
var=var1+var2+1;
var2=var1;
var1=var;
}
return var;
}
private static int recursive(int n){
if (n<=1){
return 1;
}
return rec(n-1)+rec(n-2)+1;
}
public static void main(String[] args) {
System.out.println(iter(10));
}
公共静态int迭代(int n){
int-var=1;
int var1=1;
int var2=1;
如果(n您当然可以定义该函数以返回一个双精度
,同样,您也可以定义它以返回一个字符串
。这些格式能够表示您将返回的值,没有理由这样做
- 您正在计算的函数(修改后的斐波那契序列)是在整数集上定义的-事实上,只有正整数。它永远不会产生不能用
int
表示的值
double
(和String
)在空间和计算方面都比较昂贵
- 返回类型强烈地指示了其他开发人员所期望的数据类型。返回只包含
1,2,3,…
的double
在某种程度上是误导性的
因此,如果你愿意,可以使用double
;它会很好地工作。但问题更多的是“为什么?”而不是“为什么不?”.您当然可以定义函数来返回一个双精度
,就像定义函数来返回字符串一样。这些格式能够表示您将返回的值,没有理由这样做
- 您正在计算的函数(修改后的斐波那契序列)是在整数集上定义的-事实上,只有正整数。它永远不会产生不能用
int
表示的值
double
(和String
)在空间和计算方面都比较昂贵
- 返回类型强烈地指示了其他开发人员所期望的数据类型。返回只包含
1,2,3,…
的double
在某种程度上是误导性的
因此,如果您愿意,可以使用double
;它可以很好地工作。但问题更多的是“为什么?”而不是“为什么不?”。猜测,因为这是作者想要的。返回类型可以是double、float或long,……为什么要这样做呢?fibonnaci的结果总是一个整数。因此不需要为double浪费内存(双64位,整数32位)如果您将private static int
更改为private static double
,它应该仍然可以工作-至少对于rec
来说,任务表示L(0)=1 L(1)=1 L(n)=L(n-1)+L(n-2)当n>1时+1。我必须打印从0到30的数字。当它是双精度时会发生什么?结果看起来像1.0、2.0、3.0、5.0、8.0…猜测,因为这是作者想要的。返回类型可以是双精度、浮点型或长型…为什么呢?fibonnaci的结果总是一个整数。所以没有必要浪费时间双精度内存(双精度64位,整数32位)如果您将private static int
更改为private static double
它应该仍然可以工作-至少对于rec
来说,任务表示L(0)=1 L(1)=1 L(n)=L(n-1)+L(n-2)当n>1时+1。我必须打印从0到30的数字。当它是双精度时会发生什么?结果会是1.0、2.0、3.0、5.0、8.0…@Susanne没问题,欢迎使用堆栈溢出!如果这个答案有用,请检查。@Susanne没问题,欢迎使用堆栈溢出!如果这个答案有用,请检查。