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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题谁来说说递归和while,分别什么时候用,哪个更好?

4 个回复

正序浏览
while可以处理些简单的问题, 递归要复杂些。能用while的话,就不用递归吧。
回复 使用道具 举报
本帖最后由 刘文超 于 2013-1-3 09:55 编辑

lz你好,
其实递归和while是没有可比性的、不用一起比较,它们应用的场合不同,要是拿for和while比比还可以。
while面对的对象是集合或者数组,相信lz可以很好理解,不再赘述。
下面我给这位童鞋简单总结一下
递归:
1.定义:程序调用自身的编程技巧称为递归。
2.思想:它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
3.条件:递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

4.注意:
  (1) 递归就是在过程或函数里调用自身;
  (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
5.最后,我给这位童鞋一个递归的简单例子:编程求20!,即20*19*18*...*2*1:
  1. package org.qyx.online;

  2. public class TestDIGUI {

  3.         public static void main(String[] args) {
  4.                 System.out.println(fun(20));
  5.         }
  6.         
  7.         public static long fun(int n){
  8.                 //定义出口:当n=1时,n的阶乘=1,返回到求2的阶乘中:2阶乘=2* 1的阶乘=2,再返回到求3的阶乘中....直到最后;
  9.                 if(n==1){
  10.                         return 1;
  11.                 }
  12.                 //n不等于1,求n的阶乘转化为求n-1的阶乘 再乘以n即可,问题规模就变小啦。。
  13.                 return n*fun(n-1);
  14.         }
  15. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
while是循环里面的
而递归是循环整个函数    看你的需求,需要怎样
回复 使用道具 举报
其实效果是一样的,
语句的表达方式不一样,但是一定程度上可以互相改写的.
但是一般来说for用于次数一定的循环,while用于次数未知的循环
循环结构是指在满足循环条件时反复执行循环代码代码块,直到循环条件不能满足为止。一个循环语句一般应包含4个部分的内容:
    初始化部分:设置循环控制的一些初始条件
    循环体部分:反复执行的代码
    迭代部分:修改循环控制条件
    判断部分:判断是否继续循环执行体

while循环
    格式如下:
        初始化部分;
        while(判断部分){
            循环体部分;
            迭代部分;
        }
    其中初始化部分和迭代部分可以没有。如果有初始化部分,程序先执行初始化部分,再执行判断部分,如果为真值,则执行红色显示的部分(即执行循环体部分,如果有迭代部分,执行迭代部分),然后再执行判断部分,如果为真值,再执行红色显示的部分,直至判断部分运算的结果为假值结束循环。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

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