public class factorial {
public static void main(String[] args)
{
System.out.println("Please enter a int number:");
int b = 0;
try
{
b =System.in.read();
}
catch(Exception ex)
{
ex.printStackTrace();
}
System.out.println(mathod(b));
} public static long mathod (int a)
{
if(a == 1)
return 1l;
else
{
return a*mathod(a-1);
}
}
}
我处学者 写一个简单的递归程序 可以正常运行 就是运行结果看不出来个所以然来 清高手指点?
若注释
System.out.println("Please enter a int number:");
int b = 0;
try
{
b =System.in.read();
}
catch(Exception ex)
{
ex.printStackTrace();
}
这个会运行出来我想要的结果 错误结果的举例 假如输入5 输出为 -5270900413883744256请高手看看为什么会是这样的结果?
public static void main(String[] args)
{
System.out.println("Please enter a int number:");
int b = 0;
try
{
b =System.in.read();
}
catch(Exception ex)
{
ex.printStackTrace();
}
System.out.println(mathod(b));
} public static long mathod (int a)
{
if(a == 1)
return 1l;
else
{
return a*mathod(a-1);
}
}
}
我处学者 写一个简单的递归程序 可以正常运行 就是运行结果看不出来个所以然来 清高手指点?
若注释
System.out.println("Please enter a int number:");
int b = 0;
try
{
b =System.in.read();
}
catch(Exception ex)
{
ex.printStackTrace();
}
这个会运行出来我想要的结果 错误结果的举例 假如输入5 输出为 -5270900413883744256请高手看看为什么会是这样的结果?
import java.io.InputStreamReader;public class factorial {
public static void main(String[] args)
{
System.out.println("Please enter a int number:");
int b = 0;
BufferedReader keyboard=new BufferedReader(new InputStreamReader(System.in));
try
{
b =Integer.parseInt(keyboard.readLine());
}
catch(Exception ex)
{
ex.printStackTrace();
}
System.out.println(b);
System.out.println(mathod(b));
} public static long mathod (int a)
{
if(a == 1)
return 1l;
else
{
return a*mathod(a-1);
}
}
}
5对应的码值是53
53的阶乘就溢出了
byte[] b =new byte[10];
try
{
System.in.read(b);
}
catch(Exception ex)
{
ex.printStackTrace();
}
String str=new String(b);
int num=Integer.parseInt(str.replace("\n\r", "").trim());
System.out.println(mathod(num));
修改一下就可以了
{
b =System.in.read()-'0'; // 换成数字0-9
}
catch(Exception ex)
{
public class fac { public static void main(String[] args) {
System.out.println("Please enter a int number:");
int b = 0;
try {
b = System.in.read();
System.out.println(b);
b = b - '0';
System.out.println(b);
} catch (Exception ex) {
ex.printStackTrace();
} System.out.println(mathod(b));
} public static long mathod(int a) {
return a == 1 ? 1 : a * mathod(a - 1);
}
}
不是return 11