//要求编写任意数n从键盘输入,以递归的方式计算1+2+3+...+n .
import java.io.*;
public class digui1
{
public static void main(String args[]) throws IOException
{
BufferedReader buf;
String str;
int n, m;
buf=new BufferedReader(new InputStreamReader(System.in));
System.out.println( "Input your number: ");
str=buf.readLine();
n=Integer.parseInt(str);
m=fac(n);
System.out.println( "1+2+3+...+n= "+m);
}
public static int fac(int n)
{
if(n==1)
return 1;
else
return (fac(n-1)+1);
}
}
我的结果
E:\java> java digui1
Input your number:
10
1+2+3+...+n=10
(怎么上一行的结果会等于10呢?)谢谢各位好心的大哥哥帮我改改!
------解决方案--------------------
public static int fac(int n)
{
if(n==1)
return 1;
else
return (fac(n-1)+1);//这一句错了, return (fac(n-1) + n)
}
}
------解决方案--------------------
...........
------解决方案--------------------
return (fac(n-1)+n);
正解
------解决方案--------------------
改成
return (fac(n-1)+n);