问题:往键盘中输入一个整数n,输出n的阶层
利用递归写出的Java代码:
import java.util.Scanner;
public class big {
public static int a[]=new int[10000000];
public static void main(String[] args) {
System.out.println("请输入整数:");
Scanner sin=new Scanner(System.in);
int number=sin.nextInt();
int index=function(number);
System.out.println(index);
for(int i=index;i>=0;i--){
System.out.print(a[i]);
if(i%100==0){
System.out.println();
}
}
}
public static int index;
public static int function(int n) {
//int index=0;
if(n==1){
a[0]=1;
return 0;
}
index=function(n-1);
for(int i=0;i<=index;i++){
a[i]=n*a[i];
}
for(int i=0;i<a.length-1;i++){
int temp=a[i];
a[i]=temp%10;
a[i+1]+=temp/10;
if(a[i+1]<=9&i>=index){//
if(a[i+1]==0){
index=i;
break;
}else {
index=i+1;
break;
}
}
}
return index;
}
}
这个也可以不用递归做,使用双重循环如下:
import java.util.Scanner;
public class big {
public static int a[]=new int[10000000];
public static void main(String[] args) {
System.out.println("请输入整数:");
Scanner sin=new Scanner(System.in);
int number=sin.nextInt();
int maxIndex=function(number);
System.out.println(maxIndex);
for(int i=function(number);i>=0;i--){
System.out.print(a[i]);
if(i%100==0){
System.out.println();
}
}
}
public static int index=0;
public static int function(int n) {
a[0]=1;
if(n==1){
return 0;
}
for(int i=2;i<=n;i++){
for(int j=0;j<=index;j++){
a[j]=a[j]*i;
}
int j=0;
while(j<=index){
int temp=a[j];
a[j]=temp%10; //j保留最低位
a[j+1]+=temp/10; //进位给j+1位
j++;
if(j>index){
index=j;
if(a[j]==0){
index=j-1;
}
}
}
}
return index;
}
}