import java.io.*;
public class Recursion
{
public static int factorial(int num)
{
if (num > 0)
if (num == 1 )
return num;
else
return ( num * factorial( num -1) );
}
public static void calculate(int num)
{
System.out.println("Test of factorial recursive:");
System.out.print("\n");
System.out.println(num + "的阶乘是:" + factorial(num));
}
public static void main(String [] args) throws IOException
{
System.out.println("请输入你要计算阶乘的数字");
String s;
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader (System.in);
in=new BufferedReader(ir);
s=in.readLine();
calculate(num);
}
}
public class Recursion
{
public static int factorial(int num)
{
if (num > 0)
if (num == 1 )
return num;
else
return ( num * factorial( num -1) );
}
public static void calculate(int num)
{
System.out.println("Test of factorial recursive:");
System.out.print("\n");
System.out.println(num + "的阶乘是:" + factorial(num));
}
public static void main(String [] args) throws IOException
{
System.out.println("请输入你要计算阶乘的数字");
String s;
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader (System.in);
in=new BufferedReader(ir);
s=in.readLine();
calculate(num);
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Recursion
{
public static int factorial(int num)
{
if (num > 0)
if (num == 1 )
return num;
else
return ( num * factorial( num -1) );
return 0;
}
public static void calculate(int num)
{
System.out.println("Test of factorial recursive:");
System.out.print("\n");
System.out.println(num + "的阶乘是:" + factorial(num));
}
public static void main(String [] args) throws IOException
{
System.out.println("请输入你要计算阶乘的数字");
String s;
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader (System.in);
in=new BufferedReader(ir);
s=in.readLine();//这里可以追加对s的判断,判断它是不是数字
int num = Integer.parseInt(s);
calculate(num);
}
}
public class Recursion
{
public static int factorial(int num)
{
if (num > 0)
if (num == 1 )
return num;
else
return ( num * factorial( num -1) );
return 1;
}
public static void calculate(int num)
{
System.out.println("Test of factorial recursive:");
System.out.print("\n");
System.out.println(num + "的阶乘是:" + factorial(num));
}
public static void main(String [] args) throws IOException
{
System.out.println("请输入你要计算阶乘的数字");
String s;
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader (System.in);
in=new BufferedReader(ir);
s=in.readLine();
calculate(Integer.parseInt(s));
}
}
public class Recursion
{
public static int factorial(int num)
{
if (num > 0)
if (num == 1 )
return num;
else
return ( num * factorial( num -1) );
return 1;
}
public static void calculate(int num)
{
System.out.println("Test of factorial recursive:");
System.out.print("\n");
System.out.println(num + "的阶乘是:" + factorial(num));
}
public static void main(String [] args) throws IOException
{
System.out.println("请输入你要计算阶乘的数字");
String s;
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader (System.in);
in=new BufferedReader(ir);
s=in.readLine();
calculate(Integer.parseInt(s));
}
}
修改过的程序
import java.io.*;
class Recursion{
public static int factorial(int num){
if (num > 0){
if (num == 1 )
return num;
return ( num * factorial( num -1) );
}
return 0;
}
public static void calculate(int num){
System.out.println("Test of factorial recursive:");
System.out.print("\n");
System.out.println(num + "的阶乘是:" + factorial(num));
}
public static void main(String [] args) throws IOException{
System.out.println("请输入你要计算阶乘的数字");
String s;
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader (System.in);
in=new BufferedReader(ir);
s=in.readLine();
calculate(Integer.parseInt(s));
}
}
{
if (num > 0)
if (num == 1 )
return num;
else
return ( num * factorial( num -1) );
}当num不大于0呢?就没有返回数据了,但你的方法体要求返回int类型,所以就会出错,
public static int factorial(int num)
{
if (num > 0)
if (num == 1 )
return num;
else
return ( num * factorial( num -1) ); else
return num;
}
设计方法时一定要保正每条分支都会有返回结果才行。
还有:
public static void main(String [] args) throws IOException
{
System.out.println("请输入你要计算阶乘的数字");
String s;
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader (System.in);
in=new BufferedReader(ir);
s=in.readLine();
calculate(num);//这里有毛病,num从何处来?
}
可以改为这样:
public static void main(String [] args) throws IOException
{
System.out.println("请输入你要计算阶乘的数字");
String s;
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader (System.in);
in=new BufferedReader(ir);
s=in.readLine();
int num = Integer.parseInt(s);
calculate(num);
}
class Recursion{
public static int factorial(int num){
if(num==0)
return 1;
else if(num>0)
return num*factorial(num-1);
}
public static void calculate(int num){
System.out.println("Test of factorial recursive:");
System.out.print("\n");
System.out.println(num + "的阶乘是:" + factorial(num));
}
public static void main(String [] args) throws IOException{
System.out.println("请输入你要计算阶乘的数字");
String s;
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader (System.in);
in=new BufferedReader(ir);
s=in.readLine();
calculate(Integer.parseInt(s));
}
}
class Recursion{
public static int factorial(int num){
if (num > 0)
{
if (num == 1 )
return num;
else
{
long a = num * factorial(num -1);
return (a);
}
}
else
return num;
}
public static void calculate(int num){
System.out.println("Test of factorial recursive:");
System.out.print("\n");
System.out.println(num + "µÄ½×³ËÊÇ£º" + factorial(num));
}
public static void main(String [] args) throws IOException{
System.out.println("ÇëÊäÈëÄãÒª¼ÆËã½×³ËµÄÊý×Ö");
String s;
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader (System.in);
in=new BufferedReader(ir);
s=in.readLine();
calculate(Integer.parseInt(s));
}
}