方法递归练习
递归汉诺塔
public class Hannoi
{
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;
}
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 ) ) ;
}
}