【Java-练习】方法递归

方法递归练习

递归汉诺塔

//n代表盘子个数 ,source源柱子,dest 目标柱子
public class Hannoi
{
    //0,1,2
    public static  void move(int n ,int source ,int dest)
    {
        if (n==1)
        {
            System.out.printf(“从 %d移到 %d%n”,source,dest);
            return;
        }
        int other =3-source-dest;
        move(n-1,source,other);
        System.out.printf("从%d移到%d%n",source dest);
          move(n-1,other,dest); 
    }
    public static void main(String[]args)
    {
        move(Integer.parseInt(args[0]),2)
    }
}

计算E

public class CalE
{
	//利用递归方式计算阶乘
	public static long factorial(int n)
	{
		if(n==0||n==1)
		{
			return 1;
		}else 
		{
			return n*factorial(n-1);
		}
	}
	//利用迭代方式计算阶乘
	public static long factorial2(int n)
	{
		int r=1;
		for(int i=1;i<=n;i++)
		{
			r=r*i;
		}
		return r;
	}
	public static double CalcE(int n)
	{
		double e=0;
		for (int i=0;i<n;i++)
		{
			e+=(1.0/factorial2(i));
		}
		return e;
	}	
	public static void main(String [] args)
	{
		System.out.printf("e  =  %f%n",CalcE(10));
	}
}

计算Pi

public class CalPi
{
	public static double calcpi(int n)
	{
		double pi4=0;
		for (int i=0;i<n;i++)
		{
			int deno = 2*i+1;
			double item = 1.0/deno;
			if(i%2==0)
			{
				pi4+=item;
			}else
			{
				pi4-= item;
			}
		}
		return 4*pi4;
	}
	public static void main(String [] args)
	{
		System.out.printf("pi  =  %f%n",calcpi(1000));
	}
}

10进制转换为16进制

public class Tran
{
	//反转字符串;
	public static String reverse(String s)
	{
		int length = s.length();
		String r ="";
		for(int i=length-1;i>=0;i--)
		{
			r+=s.charAt(i);
		}
		return r;
	}
	//10进制转16进制;
	public static String DectoHex(int n)
	{
		String r="";
		while(n>16)
		{
			int remd = n%16;
			int cons = n/16;
			if(remd>9)
			{
				char c = (char)((remd-10)+'A');
				r+=c;
			}else
			{
				r+=remd;
			}
			n=cons;
		}
		if (n>9)
		{
			char c = (char)((n-10)+'A');
			r+=c;
		}
		else
		{
			r+=n;
		}
		return reverse(r);
	}
	public static void main(String[] args)
	{
		System.out.println(DectoHex(1958));
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值