• java递归问题小程序


    一、使用组合数公式利用n!来计算。

    设计思想:1.先输入你要计算的N和K。

                      2.再用公式表示n!。

    程序流程图:

    源程序代码:

    package yanghu;
    import java.util.*;
    public class sanjiao {
           public static void main(String[] args) {
             Scanner in = new Scanner(System.in);
                System.out.print("请输入下标n:");
                int n = in.nextInt();
               System.out.print("请输入上标k:");
               int k = in.nextInt();
               int C = Jiecheng(n)/(Jiecheng(k)*Jiecheng(n - k));
               System.out.println("C(n,k) = "+C);
           }
           public static int Jiecheng(int n)
           {
               int s = 0;
               if(n < 0)
                   System.out.println("Error!");
               else if(n == 1||n == 0)
                   s = 1;
               else
                   s = n * Jiecheng(n -1);
               return s;
           }
     }

     程序截图:

    二、使用递推的方法用杨辉三角形计算。

    设计思想:1.输入N和K。

                      2.用递归的思想计算。

    设计流程图:

    程序源代码:

    package yanghu;
    import java.util.Scanner;
    public class sanjiao2 {
     public static void main(String[] args) {      
              Scanner in = new Scanner(System.in);
               System.out.print("请输入下标n:");
               int n = in.nextInt();
               System.out.print("请输入上标k:");
               int k = in.nextInt();          
               int C = CombinationNumber(n,k);
               System.out.println("C(n,k) = "+C);
           }
           public static int CombinationNumber(int n,int k)
           {
               if(k == 0||n == k) return 1;
               int s=Math.min(k,n-k);
               int p = 1,q = 0;  
               for(int i = 1; i <= s; i++)
               {
                   q = p * (n-i+1)/(i);
                   p = q;
               }  
               return q;
           } 
     }

     程序截图:

    三、使用递归的方法用组合数递推公式计算

    设计思想:1.输入n和k。

                      2.用递归思想计算。

    程序流程图:

    程序源代码:

    package yanghu;
    import java.util.Scanner;
    public class sanjiao3 {
     public static void main(String[] args) {   
              Scanner in = new Scanner(System.in);
              System.out.print("请输入下标n:");
              int n = in.nextInt();
              System.out.print("请输入上标k:");
              int k = in.nextInt();         
              int C = CombinationNumber(n,k);
              System.out.println("C(n,k) = "+C);
          }
          public static int CombinationNumber(int n,int k)
          {
              int c = 0;
              if(n == 1||k == 0||n == k)
                  c = 1;
              else
                  c = CombinationNumber(n - 1,k - 1) + CombinationNumber(n - 1,k);
              return c;
          }
     }

    程序截图:

    四、递归编程解决汉诺塔问题。

    设计思想:首先想明白什么是汉诺塔问题,然后在纸上把自己想得画出来,然后考虑递归怎么用。

    程序流程图:

    程序源代码:

    package hannuota;

    public class nuo{
          static int nDisks = 3;
          public static void main(String[] args) {
              doTower(nDisks, 'A', 'B', 'C');
          }
          public static void doTower(int topN,char from,char inter,char to){
              if(topN == 1)
                  System.out.println("Disk 1 from "+from+" to "+to);
              else{
                  doTower(topN-1, from, to, inter);
                  System.out.println("Disk "+topN+" from "+from+" to "+to);
                  doTower(topN-1, inter, from, to);
              }
          }
     }

    程序截图:

    五、使用递归方式判断某个字串是否是回文。

    设计思想:输入字符,运用递归方法判断是不是回文。

    程序流程图:

    程序源代码:package huiwenpanduan;
    import java.util.*;
    public class huiwen {
     public static void main(String[] args) { 
              String temp = "";
              char[] a;
              Scanner in = new Scanner(System.in);
              System.out.print("请输入要判断的字符串:");
              String str = in.next();
              a = str.toCharArray();
              for(int i = a.length - 1;i >= 0;i--)
              {
                  temp += a[i];
              }
              if(str.equals(temp))
                  System.out.println(str+"是回文数!");
              else
                  System.out.println(str+"不是回文数!");
          }
     }

    程序截图:

  • 相关阅读:
    Validation failed for one or more entities
    sql 存储过程
    SQL Server分页3种方案比拼
    case when 用法
    C#如何计算代码执行时间
    透过 Jet.OLEDB 读取 Excel里面的数据
    DataBinding?资料系结?资料绑定?
    ASP.NET的OutputCache
    我想写程序#3 之 「简单地设计自己的数据表(Table)」
    我想写程序#1 之 「先确立志向」
  • 原文地址:https://www.cnblogs.com/y862621115/p/7661136.html
Copyright © 2020-2023  润新知