java 的几个小算法(面试常考题)

package com.diangxing;

public class TestArithmetic {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
//		getString("abcdef");
		
//		getForString();
		
//		int [] agars = {5,90,10,40,20,70,50};
//		int numble = compute(agars);
//		System.out.println(numble);
		
//		printString();
		
		long n = recurrence(10);
		System.out.println(n);
		
	}
	
	/**
	 * 1、写一个方法,要求:输入一个字符串ABCDEFG,要求倒序输出GFEDCBA:
	 */
	private static void getString(String str){
		if(str != null && !str.isEmpty()){
			for(int i = str.length() - 1; i >= 0; i-- ){
				System.out.print(str.charAt(i));
			}
		}
	}
	
	/**
	有一个三位数,个位是c,十位是b,百位是a,
		abc
      + cba
    ----------------
       1333
	如上运算,求满足这种的三位数有几种情况?
	*/
	
	private static void getForString(){
		int b = 1;
		for(int a=0 ; a<=9 ; a++){
			for(int c=0; c<=9 ; c ++){
				if(a+c == 13){
					System.out.print("a="+a+" ");  
			        System.out.print("b="+b+" ");  
			        System.out.print("c="+c+"  ;");  
			        System.out.println();
				}
			}
		}
	}
	
	/**
	 * 有一组数,求这组数的最大数和最小数的绝对值是多少?
	 * 
	 *数组的排序
	 */
	private static int compute(int[] in){
		int temp = 0;
		for(int i = 0; i < in.length ; i ++){
			for(int j = 0 ; j < in.length  ; j ++){
				if(in[i] > in[j]){
					temp = in[i];
					in[i] = in[j];
					in[j] = temp;
				}
			}
		}
		
		for(int k = 0 ; k < in.length ; k ++){
			System.out.print(in[k] + ",");
		}
		System.out.println();
		return Math.abs(in[0] - in[in.length - 1]);
	}
	
	/**
	 * 4、打印九九乘方表:
	 */
	private static void printString(){
		System.out.println("九九乘方表:");
		for(int i = 1; i <= 9 ; i ++){
			for(int j = 1 ; j <= i; j ++){
				  System.out.print(j+"*"+i+"="+i*j+"  ");  
			}
			System.out.println();
		}
	}
	
	/**
	 * 利用递归求一个数的阶乘?
	 */
	private static long recurrence(int n){
		 if(n == 1){
			return 1;
		}else{
			return n * recurrence(n -1);
		}
	}
	
	
	
}
 

你可能感兴趣的:(java)