递归:计算自然对数的底e 计算Pi的值 10进制转16进制

利用公式
    e=1+1/1!+1/2!+1/3!+1/4!+...
    计算自然对数的底e
    @param n一共计算多少项
    @return

public static double fac(int n){
		double result=1;
		if(n==1)
			return 1;
		else 	
		return n*fac(n-1);
	}
	
	public static double calcE(int n){
		if(n==1)
			return 1;
			else {
				return calcE(n-1)+1.0/fac(n);
			}
	}

//迭代方式计算阶乘,推荐
	public static long fac2(int n){
		int r=1;
		for(int i=0;i<n;i++){
			r*=i;
		}
		return r;
	}
public static void main(String[] args){
                double res1=calcE(3);
		System.out.println(res1);
}

利用公式
    Pi/4=1-1/3+1/5-1/7+1/9-...
    计算Pi的值
    @param n一共计算多少项
    @return

public static double calcPi(int n){
		if(n==1)
			return 1;
		else{
			//int flag=-1;
			//flag=-flag;
			double result=calcPi(n-1)+(n%2==0?-1:1)*1.0/(2*n-1);
			return 4*result;
		}
	}

public static double calcPi1(int n){
		double pi4=0;
		for(int i=0;i<n;i++){
			int fenmu=2*i+1;
			double item=1.0/fenmu;
			if(i%2==0){
				pi4+=item;
			}
				else{
					pi4-=item;	
				}
		}
		return pi4*4;
	}
public static void main(String[] args){
    double Pi=calcPi(3);
    System.out.println(Pi);
    System.out.println(calcPi1(3));
}

10进制转16进制,计算公式如下例
    1958转16进制
    1958%16==6 1958/16==122
    122%6==10也就是A 122/16==7
    7<16
    1958的16进制为7A6
    @param n
    @return
    */
    
    /**
    反转字符串
    @param s
    @return 

/**
	10进制转16进制,计算公式如下例
	1958转16进制
	1958%16==6 1958/16==122
	122%6==10也就是A 122/16==7
	7<16
	1958的16进制为7A6
	@param n
	@return
	*/
	
	/**
	反转字符串
	@param s
	@return
	*/
	public static String reverse(String s){
		int length=s.length();
		String r="";
		for(int i=length-1;i>=0;i--){
			char ch=s.charAt(i);
			r=r+ch;
		}
		return r;
	}
	public static String decToHex(int n){
		String hex=""; 
		while(n>=10){
			int r=n%16;
			n=n/16;
			if(r<10){
				hex+=r;
			}
			else{
				char ch=(char)('A'+(r-10));
				hex+=ch;
			}
		}
			if(n!=0){
				hex+=n;
		}
		return reverse(hex);
}

    public static String decToHex1(int n){
		String hex=""; 
		while(n>0){
			int r=n%16;
			n=n/16;
			if(r<10){
				hex+=r;
			}
			else{
				char ch=(char)('A'+(r-10));
				hex+=ch;
			}
		}
    return reverse(hex);
}

public static void main(String[] args){
    String hex=decToHex(300);
    System.out.println(hex);
    System.out.println(decTodex(300));
}

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值