小程序交流群:528215729,加入和小伙伴们一起探讨开发疑难、运营idea吧

admin

admin

发表于 2018-04-14 16:29:22

摘要:java递归问题小程序 (微信小程序开发 - 微信 小程序外包开发-微信小程序 开发教程-微信小程序开发者社区,尽在 www.mntuku.cn)

一、使用组合数公式利用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+"不是回文数!");
      }
 }

程序截图:

 

106阅读 | 0评论
你的回应