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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© moonlight 黑马帝   /  2011-11-20 16:42  /  1645 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 moonlight 于 2011-11-21 17:11 编辑

在Java的学习中递归的问题自己感觉总是不能理解透彻,哪位大神给点建议,最好带有例子,谢谢!

5 个回复

倒序浏览
public static void show(File f){
System.out.println(f);
File []files = f.listFiles();
for(int x =0;x<files.length;x++){
if(files[x].isDirectory())
show(files[x]);
else
System.out.println(f);
}
这是文件的一个递归的方法,递归就是自身调用自身,去看毕老师的视频,讲的很透彻的。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
1 2 3 5 8 13。。。。 费氏数字,它就符合递归的规律。递归就是自己调用自己
假设第三个数字为n,则第二个数字为n-1,第一个数字为n-2,那么 n = 1;(n>0)
                                                                                          n = f(n-1)+f(n-2);(n>2)
下面是一个递归的简单的例子:

package com.xiaotian.exercise;
import java.util.*;
public class TestRecursion {

        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入数字");
                long in = sc.nextLong();
                System.out.println(get(in));
        }
        public static long get(long n){
                if(n>2){
                        return get(n-1)+get(n-2);
                }else if(n>0){
                        return 1;
                }else{
                        System.out.println("数字不合法");
                        return -1;
                }
        }

}

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
ZHB 黑马帝 2011-11-20 20:23:51
板凳
拿分,拿钱,谢谢!!
回复 使用道具 举报
public static int method(int n)
{
if(n==1)
return 1;
else
return n*method(n-1);
}
递归就是自己调用自己,但是肯定有一个跳出的条件,不然会一直递归下去,
f(n==1)
return 1; 就是跳出来的条件
return n*method(n-1); 就是自己调用自己,n 就是参数,method就是方法,n-1就是下一次传进去的参数

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
递归常用的就是用在文件操作上,因为文件的结构就有两种情况,一是文件,二是文件夹,所有可以通过递归遍历所有文件的操作:
  1.         public void scanFile(File file){
  2.                 if(file.isFile()){
  3.                         System.out.println(file.getName());
  4.                 }else{
  5.                         System.out.println(file.getName());
  6.                         File[] files = file.listFiles();
  7.                         for (File f : files) {
  8.                                 scanFile(f); //递归
  9.                         }
  10.                 }
  11.         }
复制代码
通过上面的代码就可以递归遍历出某个目录下的所有文件与文件夹的名称

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

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