java小程序,帮忙差错!谢谢
importjava.util.Scanner;/***用递归算法求1+..n的和*@authorAdministrator**/publicclassTotal{pub...
import java.util.Scanner;
/**
* 用递归算法求1+..n的和
* @author Administrator
*
*/
public class Total {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入n:");
int n=scan.nextInt();
Total a=new Total();
int s=a.sum(n);
System.out.println("得到的结果是:"+s);
}
public int sum(int m){
if(m>=0){
m = m+sum(m--);
}
//b=m+(m-1)+(m-2)+(m-3)+(m-4)+....+1
return m;
} 展开
/**
* 用递归算法求1+..n的和
* @author Administrator
*
*/
public class Total {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入n:");
int n=scan.nextInt();
Total a=new Total();
int s=a.sum(n);
System.out.println("得到的结果是:"+s);
}
public int sum(int m){
if(m>=0){
m = m+sum(m--);
}
//b=m+(m-1)+(m-2)+(m-3)+(m-4)+....+1
return m;
} 展开
5个回答
2011-10-11
展开全部
if改为while
public class Total {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入n:");
int n=scan.nextInt();
Total a=new Total();
int s=a.sum(n);
System.out.println("得到的结果是:"+s);
}
public int sum(int m){
while(m>=0){
m = m+sum(m--);
}
//b=m+(m-1)+(m-2)+(m-3)+(m-4)+....+1
return m;
}
public class Total {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入n:");
int n=scan.nextInt();
Total a=new Total();
int s=a.sum(n);
System.out.println("得到的结果是:"+s);
}
public int sum(int m){
while(m>=0){
m = m+sum(m--);
}
//b=m+(m-1)+(m-2)+(m-3)+(m-4)+....+1
return m;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样就可以了
import java.util.Scanner;
public class Total {
private int num=0;
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入n:");
int n=scan.nextInt();
Total a=new Total();
int s=a.sum(n);
System.out.println("得到的结果是:"+s);
}
public int sum(int m){
if(m>=0){//这边你那么写m一直是大于0的 死循环了
num=m;
num = num+sum(--m);
}
//b=m+(m-1)+(m-2)+(m-3)+(m-4)+....+1
return num;
}
}
import java.util.Scanner;
public class Total {
private int num=0;
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入n:");
int n=scan.nextInt();
Total a=new Total();
int s=a.sum(n);
System.out.println("得到的结果是:"+s);
}
public int sum(int m){
if(m>=0){//这边你那么写m一直是大于0的 死循环了
num=m;
num = num+sum(--m);
}
//b=m+(m-1)+(m-2)+(m-3)+(m-4)+....+1
return num;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把
if(m>=0){
m = m+sum(m--);
}
中的m--改成--m 如果是m--的话每次递归调用的是m而不是m-1后的值
if(m>=0){
m = m+sum(m--);
}
中的m--改成--m 如果是m--的话每次递归调用的是m而不是m-1后的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public int sum(int m){
if(m>0){
m=m+sum(m-1);
}
return m;
}
记得,,M是要大于0才递归,如果M等于0就要回溯了。
if(m>0){
m=m+sum(m-1);
}
return m;
}
记得,,M是要大于0才递归,如果M等于0就要回溯了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
递归没那么复杂你这样改就可以了
public int sum(int m){
if(m>=1){
return m;
}
return m+sum(m-1);
}
public int sum(int m){
if(m>=1){
return m;
}
return m+sum(m-1);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询