精华内容
下载资源
问答
  • java算法递归字符

    2011-03-31 19:36:56
    源代码详解(算法递归字符)~~~~~~~~~~
  • Java算法 递归算法计算阶乘

    万次阅读 多人点赞 2012-10-30 18:11:28
    代码: package com.xu.main; import java.util.Scanner; public class P9 { static long fact(int n) { if(n ) { return 1; } else { return n * fact(n - 1); } }

    代码:

    package com.xu.main;
    
    import java.util.Scanner;
    
    public class P9 {
    
    	static long fact(int n)
    	{
    		if(n <= 1)
    		{
    			return 1;
    		}
    		else
    		{
    			return n * fact(n - 1);
    		}
    	}
    	
    	public static void main(String[] args) {
    		int i;
    		System.out.println("请输入要求阶乘的一个整数:");
    		Scanner input = new Scanner(System.in);
    		i = input.nextInt();
    		System.out.println(i + "的阶乘结果是:"+fact(i));
    
    	}
    
    }
    


    运行结果:

     

    展开全文
  • package 递归; public class 高效n次幂 { public static void main(String[] args) { int a =pom(2,10); System.out.println(a); } private static int pom(int a, int n) { if (n == 0) return 1; ...
    package 递归;
    
    public class 高效n次幂 {
    
        public static void main(String[] args) {
    
            int a =pom(2,10);
    
            System.out.println(a);
    
        }
    
    
        private static int pom(int a, int n) {
    
            if (n == 0)
                return 1;
    
            int res = a;
            int ex = 1;
    
            while (res << 1 < n) {
                res = res * res;
                ex <<= 1;
            }
            return res * pom(a, n - ex);
    
        }
    
    }
    
    
    展开全文
  • 主要介绍了 Java递归算法计算阶乘,感兴趣的朋友可以参考下
  • java递归算法

    2013-08-24 18:45:49
    java递归算法,java递归算法,java递归算法
  • java算法递归算法

    2012-11-01 09:57:45
    java算法递归算法 递归算法时通过解决相同问题的一个或几个小例子来解决问题的算法。在java中,实现递归方法就是调用自身的方法。 例1:阶乘函数递归实现 Java代码 static int factorial(int ...

    java算法:递归算法

    递归算法时通过解决相同问题的一个或几个小例子来解决问题的算法。在java中,实现递归方法就是调用自身的方法。

    例1:阶乘函数递归实现

    Java代码 复制代码
    1. static int factorial(int n){   
    2.     if(n == 0){   
    3.         return 1;   
    4.     }   
    5.     return n * factorial(n - 1);   
    6. }  
    static int factorial(int n){
    	if(n == 0){
    		return 1;
    	}
    	return n * factorial(n - 1);
    }

    Java代码 复制代码
    1. for(t = 1, i = 1; i <=N; i++){   
    2.     t *= i;   
    3. }  
    for(t = 1, i = 1; i <=N; i++){
    	t *= i;
    }

    是等价的,一个递归程序总可以转换成执行相同计算的非递归程序。同样,可以用递归来表示设计循环的任何计算。使用递归能以简洁的形式表达复杂的算法,且不失效率。如:阶乘函数的递归实现可以避免使用局部变量。递归的开销在于编程系统中支持方法调用的机制,它使用了一个等同的内嵌堆栈。

    例2:可疑的递归程序

    Java代码 复制代码
    1. static int puzzle(int n){   
    2.     if(n == 1){   
    3.         return 1;   
    4.     }   
    5.     if(n % 2 == 0){   
    6.         return puzzle(n/2);   
    7.     }else{   
    8.         return puzzle(3 * n + 1);   
    9.     }   
    10. }  
    static int puzzle(int n){
    	if(n == 1){
    		return 1;
    	}
    	if(n % 2 == 0){
    		return puzzle(n/2);
    	}else{
    		return puzzle(3 * n + 1);
    	}
    }

    与阶乘函数递归实现相比,这个是不能证明的。但是,该程序确实可以终止的。

    例3:欧几里得算法

    Java代码 复制代码
    1. static int gcd(int m, int n){   
    2.     if(n == 0){   
    3.         return m;   
    4.     }   
    5.     return gcd(n, m%n);   
    6. }  
    static int gcd(int m, int n){
    	if(n == 0){
    		return m;
    	}
    	return gcd(n, m%n);
    }

    对于欧几里得算法,递归的深度取决于参数的算术性质(已知是对数级的)。

    例4:对前缀表达式求值的递归程序

    Java代码 复制代码
    1. static char[] a;   
    2. static int i;   
    3. static int eval(){   
    4.     int x = 0;   
    5.     while(a[i] == ' '){   
    6.         i++;   
    7.     }   
    8.     if(a[i] == '+'){   
    9.         i++;   
    10.         return eval() + eval();   
    11.     }   
    12.     if(a[i] == '*'){   
    13.         i++;   
    14.         return eval() * eval();   
    15.     }   
    16.     while((a[i] >= '0')&&(a[i]<= '9')){   
    17.         x = 10 * x + (a[i++] - '0');   
    18.     }   
    19.     return x;   
    20. }  
    static char[] a;
    static int i;
    static int eval(){
    	int x = 0;
    	while(a[i] == ' '){
    		i++;
    	}
    	if(a[i] == '+'){
    		i++;
    		return eval() + eval();
    	}
    	if(a[i] == '*'){
    		i++;
    		return eval() * eval();
    	}
    	while((a[i] >= '0')&&(a[i]<= '9')){
    		x = 10 * x + (a[i++] - '0');
    	}
    	return x;
    }

    原则上,可用对等的递归程序代替人任何for循环。但通常,用递归程序来表达运算比for循环更自然。递归的深度是指在整个运算过程中方法调用的最大的嵌套次数。

    例5:链表递归函数

    简单的链表处理任务可以使用递归方式,但可能不试用于巨型链表,因为递归的深度可能与链表的长度成比例。

    Java代码 复制代码
    1. int count(Node h){   
    2.     if(h == null){   
    3.         return 0;   
    4.     }   
    5.     return 1 + count(h.next);   
    6. }   
    7. void traverse(Node h){   
    8.     if(h == null){   
    9.         reurn;   
    10.     }   
    11.     h.item.visit();   
    12.     travrese(h.next);   
    13. }   
    14. void traverseR(Node h){   
    15.     if(h == null){   
    16.         reurn;   
    17.     }   
    18.     travreseR(h.next);   
    19.     h.item.visit();   
    20. }   
    21. Node remove(Node h, Item v){   
    22.     if(h == null){   
    23.         return null;   
    24.     }   
    25.     if(eq(h.item,v)){   
    26.         return remove(h.next,v);   
    27.     }   
    28.     h.next = remove(h.next,v);   
    29.     return h;   
    30. }  
    展开全文
  • Java递归算法

    2020-12-22 17:40:01
    Java递归算法是基于Java语言实现的递归算法。  递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。  ...
  • 主要介绍了java基于递归算法实现汉诺塔问题,结合具体实例形式分析了java递归算法的实现与使用技巧,需要的朋友可以参考下
  • 主要介绍了Java基于递归解决全排列问题算法,结合实例形式分析了Java使用递归算法解决全排列问题的原理与具体实现技巧,需要的朋友可以参考下
  • java 折半查找 非递归算法 递归算法

    千次阅读 2017-05-20 11:13:49
    package datastruct.find; public class Binary... //方法一:非递归折半查找: private static void binarySearch(int a[],int k) { int low=0; int high=a.length-1; int mid; while (low) { mid=
    package datastruct.find;
    
    public class BinarySearch {
    	//方法一:非递归折半查找:
    	private static void binarySearch(int a[],int k) {
    		int low=0;
    		int high=a.length-1;
    		int mid;
    		while (low<=high) {  
    			mid=(low+high)/2;
    			if (k==a[mid]) {
    				System.out.println(a[mid]+"在"+mid+"位置");
    			     return;
    			}else {
    				if (k<a[mid]) {
    					high=mid-1;
    				}
    				else {
    					low=mid+1;
    				}
    			}
    		}
    		System.out.println("无法查找到该元素!");
    	}
    	//方法二:使用递归的折半查找
    	private static int binarySearch(int a[],int k,int low,int high ) {
    		if (a.length<=0) {
    			System.out.println("数组内元素为空!");
    			return -1;
    		} 
    		if (low>high) {
    			System.out.println("无法查找到该元素!");
    			return -1;
    		}else {
    			int mid=(low+high)/2;
    			if (k==a[mid]) {
    				System.out.println(a[mid]+"在"+mid+"位置");
    			     return mid;
    			}else {
    				if (k<a[mid]) {
    				 return	binarySearch(a, k, low, mid-1);
    				}else {
    				 return binarySearch(a, k, mid+1, high);
    				}
    			}
         	}
    	}
    	
    	
         public static void main(String[] args) {
    		int a[]={1,2,3,4,5,6,7};
    		System.out.println("非递归算法:");
    		binarySearch(a, 1);
    		binarySearch(a, 2);
    		binarySearch(a, 3);
    		binarySearch(a, 4);
    		binarySearch(a, 5);
    		binarySearch(a, 6);
    		binarySearch(a, 7);
    		System.out.println("递归算法:");
    		binarySearch(a, 1, 0, a.length-1);
    		binarySearch(a, 2, 0, a.length-1);
    		binarySearch(a, 3, 0, a.length-1);
    		binarySearch(a, 4, 0, a.length-1);
    		binarySearch(a, 5, 0, a.length-1);
    		binarySearch(a, 6, 0, a.length-1);
    		binarySearch(a, 7, 0, a.length-1);
    	}
    }


    运行结果:
                     非递归算法:
                     1在0位置
                     2在1位置
                     3在2位置
                     4在3位置
                     5在4位置
                     6在5位置
                     7在6位置
                     递归算法:
                     1在0位置
                     2在1位置
                     3在2位置
                     4在3位置
                     5在4位置
                     6在5位置
                     7在6位置
    展开全文
  • Java经典递归算法

    万次阅读 多人点赞 2018-06-16 23:17:57
    import java.math.BigInteger; public class LoopMutiply { public BigInteger sum(int i) { if (i == 1) { return BigInteger.ONE; } return BigInteger.valueOf(i).multiply(sum(i - 1)); } public ...
  • 今天小编就为大家分享一篇关于Java利用递归算法实现查询斐波那契数,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 1、深度优先算法 不断地沿着顶点的深度方向遍历 **假如查找顺序为上右下左**,那么该算法的顺序:A、B、C、D、E、F、G、H、I、J 理解这个可以用栈来理解,先进后出 1.A找到了B,把B入栈,B先从右边找到了C,把C入栈...
  • java递归算法实例分析

    2020-08-28 13:54:05
    主要介绍了java递归算法实例分析,具有一定借鉴价值,需要的朋友可以参考下。
  • 主要介绍了java利用递归算法实现对文件夹的删除功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解,这里我们就来看几个Java使用递归解决算法问题的实例讲解
  • 本篇文章介绍了,在Java递归算法的使用分析。需要的朋友参考下
  • 主要介绍了JAVA递归实现全排列算法的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
  • 主要介绍了Java递归算法,通过两则示例分析了Java递归算法实现阶乘与求和的具体操作技巧,需要的朋友可以参考下
  • JAVA算法递归求解母牛问题(JAVA代码) package com.bean.algorithmbasic; public class CowProblem { /* * 由于所有的母牛都不会死,所以第N-1年的牛会毫无损失的活到第N年。 * 同时,所有成熟的牛...
  • 递归其实在程序当中我们可以理解为自己调用自己,使用递归做相关计算都是具有一定规律的...下面我们就在Java中使用递归打印出99乘法表。 递归打印99乘法表 嵌套for循环实现99乘法表 for (int i = 1; i<= 9; i++)
  • Java递归算法是基于Java语言实现的递归算法递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。接下来通过本文给大家介绍Java递归算法相关知识,感兴趣的朋友一起学习吧
  • 基础&算法|Java递归算法练习

    千次阅读 2018-10-04 21:35:54
    Java递归算法练习 使用java实现几个比较简单的递归面试题 写递归算法的时候,可以类比数学归纳法。 将每步先简化 单向链表与递归算法 实现单向链表 Node.java /** * @ClassName Node * @Description TODO * @...
  • 好程序员Java培训分享Java递归算法的使用,1、java递归算法基本思路,Java递归算法是基于Java语言实现的递归算法递归算法是一种直接或者间接调用自身函数或者方法的算法递归算法实质是把问题分解成规模缩小的...
  • Java递归算法计算阶乘

    千次阅读 2016-01-16 13:41:07
    本文为大家分享的java算法计算阶乘,在学习Java课程时经常会遇到求阶乘问题,今天接跟大家一起探讨一下 代码如下: package com.xu.main; import java.util.Scanner; public class P9 { static long fact
  • 在本篇文章里小编给大家整理了关于java递归算法的实例内容,以及相关知识点总结,需要的朋友们可以学习下。
  • Java 递归算法

    千次阅读 2017-05-08 09:15:34
    Java中的递归,其实就是该函数自己调用自己的一种方法,通过这种方法可以省略代码,但是在递归的过程中需要注意限定条件,本质上,递归也是一种循环,所以需要通过限定条件来结束函数。 以下通过一个小例子,即1~99...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,382
精华内容 55,352
关键字:

java算法递归

java 订阅