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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马清泽 中级黑马   /  2012-12-6 09:32  /  1832 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 马清泽 于 2012-12-6 11:19 编辑

算法有很多?你如递归等?这个具体是什么原理?怎么应用?

3 个回复

倒序浏览
递归算法:递归算法就是一个函数通过不断对自己的调用而求得最终结果的一种思维(简单的说就是自己调用自己;)

下面代码是一段实例(看红色字段即是递归算法)

package com.itheima;
import java.io.File;
public class ShowDir {
/**
  * @param args
  */
public static void main(String[] args) {
  File dir = new File("d:\\jdk1.6.0_37");
  show_Dir(dir,0);
}

public static String getLevel(int level)
{
  StringBuilder sb = new StringBuilder();
  sb.append("|--");
  for(int x=0;x<level;x++)
  {
   sb.insert(0, "   ");
  }
  return sb.toString();
}

public static void show_Dir(File dir,int level)
{  
  System.out.println(getLevel(level)+dir.getName());
  level++;
  File[] files = dir.listFiles();
  for(int x=0;x<files.length;x++)
  {
   if(files[x].isDirectory())
   {
    show_Dir(files[x],level);
   }else{
    System.out.println(getLevel(level)+files[x]);
   }
  }
  
}
}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
/*
        冒泡排序
               
                相邻元素进行比较,最值出现在右边。
*/
class Demo2
{
        //冒泡排序
        public static void bubbleSort(int[] arr){
               
                for(int k=0;k<arr.length-1;k++){ //控制比较多少轮
                       
                        for(int i=0;i<arr.length-1-k;i++){ //为什么减1,因为i位置元素与i+1位置元素比较
                                                           //-k操作是为了将右边比较后出现的最值刨掉,
                                                                                           //也就是最右边出现的最值,不在比较
                                if(arr[i]>arr[i+1]){
                                       
                                        int tmp=arr[i];
                                        arr[i]=arr[i+1];
                                        arr[i+1]=tmp;
                                }
                        }                
                }
        }

        public static void showArray(int[] arr){
       
                System.out.print("[");
                for(int i=0;i<arr.length;i++){
                        if(i==arr.length-1){
                               
                                System.out.print(arr[i]);
                        }else{
                                System.out.print(arr[i]+",");
                        }
                }
                System.out.println("]");
        }


        public static void main(String[] args)
        {
                int[] arr={1,5,2,8,6,7};
               
                showArray(arr);

                bubbleSort(arr);
               
                showArray(arr);

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
递归就是在本函数内调用本函数:  下面是运用递归计算 n+(n-1)+(n-2)+......1的一个程序
在主函数中调用该静态方法,传进一个参数即可.
public  static int addSum(int num)
{
    if(num==1)
             return  1;
     else
            return  num+addSum(num-1);
      
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马