A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhouchao 中级黑马   /  2013-7-7 16:03  /  1216 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-8 16:40 编辑

class  DiGui
{
        public static void main(String[] args)
        {
                mothed(1);
        }
        public static void mothed(int x)
        {                   if(x<100)
                {        
                        System.out.println(x);
                        x++;
                        mothed(x);
                }
                else
                        System.out.println(x);               
        }
}

关于递归的代码,这应该将1-100进行了遍历 可是要求和该如何定义呢?
如果在mothed里定义一个求和的变量的话 进行递归的话就会重新赋值,该如何解决这个问题



评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

3 个回复

倒序浏览
//递归要定义结束条件,否则的话就是死循环。
//记得,毕老师视频中有讲到递归,如果是从1加到100的话,递归是逐层实现的,也就是说从100到1分成100分函数,然后到1得出结果,再次逆推上去,这是计算机实现递归。

下面是代码:


  1. public class Recursion {

  2.         /**
  3.          * @param args
  4.          */
  5.        
  6.         public static void main(String[] args) {
  7.                
  8.                 System.out.println(method(100));
  9.         }
  10.         public static int method(int x)
  11.         {
  12.                 if(x<=0)
  13.                         throw new RuntimeException("输入数据错误!");
  14.                 if(x==1)
  15.                         return 1;                               
  16.                 return x+method(x-1);
  17.                                        
  18.        
  19.         }

  20. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
递归的弊端是使用栈太厉害,递归太多都可以能直接堆栈溢出。
回复 使用道具 举报
public static int method(int i){
if(i == 100){
return i;
}
return i + method(i++);
}



method(1):
我这是用手机打的,上面括号是中文括号

你自己可以练习编写一个递归,求任意连续自然数求和,比如十到100等




然后主方法中method()

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马