「java递归训练」java简单递归

博主:adminadmin 2023-03-22 02:39:06 972

今天给各位分享java递归训练的知识,其中也会对java简单递归进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

JAVA中的递归方法?

自己调用自己或几个方法相互调用。

最经典的是求正整数阶的算法:

int fact(int i){

if(i=1)return 1;

return fact(i-1)*i;

}

多数递归方法可以转换成非递归方法。

一般同功能的非递归方法,执行效率要优于递归方法。但合理的使用递归方法,可以使代码结构更清晰,更有可读性,从而更方便维护。

Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

java中递归算法是什么怎么算的?

一、递归算法基本思路:

Java递归算法是基于Java语言实现的递归算法。递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法表示问题的解。递归往往能给我们带来非常简洁非常直观的代码形式,从而使我们的编码大大简化,然而递归的思维确实跟我们的常规思维相逆的,通常都是从上而下的思维问题,而递归趋势从下往上的进行思维。

二、递归算法解决问题的特点:

【1】递归就是方法里调用自身。

【2】在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

【3】递归算法代码显得很简洁,但递归算法解题的运行效率较低。所以不提倡用递归设计程序。

【4】在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。

【5】在做递归算法的时候,一定把握出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口就是一个条件,当满足了这个条件的时候我们就不再递归了。

三、代码示例:

public class Factorial {

    //this is a recursive function

    int fact(int n){

        if (n==1) return 1;

        return fact(n-1)*n;

    }

     

}

     public class TestFactorial {

 

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Factorial factorial=new Factorial();

        System.out.println("factorial(5)="+factorial.fact(5));

    }

}

代码执行流程图如下:

此程序中n=5就是程序的出口。

JAVA这道题要如何用递归实现呢,求大神

按照你的要求编写的Java递归程序如下:

import java.util.Scanner;

public class GGG {

 public static void main(String[] args) {

  int N = 0;

  Scanner sc=new Scanner(System.in);

  int num=sc.nextInt();

  for(int n=0;nnum;n++){

   N=sc.nextInt();

   int a[]=new int[N];

   for(int i=0;ia.length;i++){

    a[i]=sc.nextInt();

   }

   System.out.print("case "+(n+1)+":");

   process(a,0);

   System.out.println();

  }

 }

 private static void process(int[] a, int n) {

  if(n==0){

   if(isPrime(a[n+1]))

    System.out.print(1+" ");

   else

    System.out.print(0+" ");

   

  }else if(n==a.length-1){

   if(isPrime(a[n-1]))

    System.out.print(1+" ");

   else

    System.out.print(0+" ");

   return;

  }else{

   if(isPrime(a[n-1])isPrime(a[n+1]))

    System.out.print(2+" ");

   else if(isPrime(a[n-1])||isPrime(a[n+1]))

    System.out.print(1+" ");

   else

    System.out.print(0+" ");

  }

  process(a,n+1);

 }

 public static boolean isPrime(int num) {

  int i;

  for(i=2;inum;i++){

            if(num%i==0)

            break;

         }

       if(i==num){

        return true;

       }

       return false;

 }

}

运行结果:

2

5

5 7 2 9 13

case 1:1 2 1 2 0

3

10 4 5

case 2:0 1 0

关于java递归训练和java简单递归的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。