用java递归方法实现

用java递归方法实现,第1张

1、递归做为一种算法在程序设计语言中广泛使用,是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。

2、递归算法一般用于解决三类问题

1)数据的定义是按递归定义的。(Fibonacci(斐波那契)的函数)

2)问题解法按递归算法实现。(回溯)

3)数据的结构形式是按递归定义的。(树的遍历,图的搜索)

Java方法递归是指在一个方法的内部调用自身的过程,以此类推就是java方法递归的理解思想,具体来讲就是把规模大的问题转化为规模小的相似的子问题来解决。在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况。另外这个解决问题的函数必须有明显的结束条件,这样就不会产生无限递归的情况了。因此,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=0n<numn++){

   N=sc.nextInt()

   int a[]=new int[N]

   for(int i=0i<a.lengthi++){

    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=2i<numi++){

            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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11374984.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存