码迷,mamicode.com
首页 > 其他好文 > 详细

递归方法的应用

时间:2017-10-14 01:40:48      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:turn   程序代码   需要   阶乘   技术分享   ima   img   利用   tin   

一、计算组合数

1.设计思路:

①利用组合数公式计算(计算阶乘用循环)

②利用递推方法计算

③利用递归方法计算

2.流程图:

技术分享

3.程序代码

//信1605-3 20163683 蔡金阳
package lesson2;
import java.util.Scanner;
public class Digui {

    public static int Zuhe1(int n,int k){
        int x=1,y=1,z=1,c;
        for(int i=n;i>0;i--){
            x=i*x;
        }
        for(int i=k;i>0;i--){
            y=i*y;
        }
        for(int i=n-k;i>0;i--){
            z=i*z;
        }
        c=x/(y*z);
        return c;
    }//公式法求
    public static int Zuhe2(int n,int k){
         int c=1;
         for(int i=k;i<n;i++){
             c=c*(i+1)/(i-k+1);
         }
         return c;
    }//递推法求
    public static int Zuhe3(int n,int k){
        int i=n;
        if(n==k){
            return 1;
        }
        else{
            return Zuhe3(n-1,k)*n/(n-k);
        }
        
    }//递归法求

    public static void main(String args[]) {
    int n,k;
    Scanner sc=new Scanner(System.in);
    n=sc.nextInt();
    k=sc.nextInt();
    System.out.println(Zuhe1(n,k));
    System.out.println(Zuhe2(n,k));
    System.out.println(Zuhe3(n,k));
}
}

4.运行结果

技术分享

二、汉诺塔问题

1.设计思路:

①输入汉诺塔层数

②利用递归找出方法

③利用move函数输出

2.流程图:

技术分享

3.实验代码

//信1605-3 20163683 蔡金阳
package lesson2;
import java.util.Scanner;
public class Hnt{
    public static void main(String args[]) {
        int n;
        Scanner sc=new Scanner(System.in);
        System.out.println("input the number of diskes:");
        n=sc.nextInt();
        System.out.println("The step to move "+n+" diskes:");
        Hanoi(n,"A","B","C");
    }
    public static void move(String x,String y){
        System.out.println(x+"-->"+y);
    }
    public static void Hanoi(int n,String one,String two,String three){
        if(n==1){
            move(one,three);
        }
        else{
            Hanoi(n-1,one,three,two);
            move(one,three);
            Hanoi(n-1,two,one,three);
        }
    }
}

4.运行结果

技术分享

三、字符回文数

1.设计思路:

①输入一个字符串

②利用递归方法判断是否为字符回文数

③输出判断结果

2.流程图:

技术分享

3.实验代码

//信1605-3 20163683 蔡金阳
package lesson2;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Hws {
    public static void main(String[] args)
    {
         String test;
         Scanner sc=new Scanner(System.in);
         System.out.println( "请输入需要判断的字符串:" );
         test=sc.next();
         int i=0;
         int j=test.length()-1;
         String jieguo=" ";
         if(panduan(test,i,j))
         {
             jieguo=test+"判断是否回文的结果为:是。";
         }
         else
         {
             jieguo=test+"判断是否回文的结果为:否。";
         }
         System.out.println(jieguo);
    }
    public static boolean panduan(String test,int i,int j)
    {
        if(i>j)
        {
            throw new IllegalArgumentException();
        }
        else if(i==j)
        {
            return true;
        }
        else if(i==j-1)
        {
            return test.charAt(i)==test.charAt(j);
        }
        else
        {
            return ((test.charAt(i)==test.charAt(j))&&panduan(test,i+1,j-1));
        }
    }

}

4.运行结果

技术分享

 

递归方法的应用

标签:turn   程序代码   需要   阶乘   技术分享   ima   img   利用   tin   

原文地址:http://www.cnblogs.com/cairsha/p/7662333.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!