这是一个用 C 编写的代码。它接收一个整数作为命令行参数,并计算递归关系。
我想将此代码转换为 Java,但不确定如何重写以下部分。有谁知道我如何用Java编写它?
unsigned long long int gn[3]={0,0,1}, tmp;
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ unsigned long long int gn[3]={0,0,1}, tmp; int i, j; int n = atoi(argv[1]); for(i=3; i<=n; i++){ tmp = 0; for(j=0; j<3; j++){ tmp += gn[j]; } gn[0] = gn[1]; gn[1] = gn[2]; gn[2] = tmp; } if(n<2){ printf("%ld\n",gn[n]); }else{ printf("%llu\n",gn[2]); } return 0; }
Input: 1, Output: 0
Input: 5, Output: 4
Input: 10, Output: 81
Input: 30, Output: 15902591
从 Java 8 开始,支持 unsigned long(无符号 64 位)。您可以使用它的方式是:
Long l1 = Long.parseUnsignedLong(“17916881237904312345”);
要打印它,你不能简单地打印 l1,但你必须首先:
String l1Str = Long.toUnsignedString(l1)
然后 System.out.println(l1Str);
如果您使用的 Java 版本低于 Java 8,那么您应该使用BigInteger