整数的阶层

问题:往键盘中输入一个整数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;
	}
		
}

猜你喜欢

转载自blog.csdn.net/qq_36728361/article/details/82916179