课程作业02

 

一、

1.设计思想

输入n,k;设计求n的阶乘函数,调用求出组合数;

2.流程图

 

3.代码

   package one;

import javax.swing.JOptionPane;

public class one {

      public static void main(String[] args) {

             // TODO 自动生成的方法存根

             String num1,num2;

             int n,k;

             num1=JOptionPane.showInputDialog( "请输入n:" );

             n=Integer.parseInt( num1 );

             num2=JOptionPane.showInputDialog( "请输入k:" );

             k=Integer.parseInt( num2 );

             zuhe(n, k);

             JOptionPane.showConfirmDialog(null, zuhe(n, k),"组合", JOptionPane.CLOSED_OPTION);

      }

     

public static int zuhe(int n,int k){

      int p;

      p=jiecheng(n)/(jiecheng(k)*jiecheng(n-k));

     

      return p;

}

public static int jiecheng(int n) {

     

      if(n==1||n==0) {

             return 1;

            

      }

            

             return n=n*jiecheng(n-1);

}

}

1.   设计思想

a)  输入第几行第几个;设计组合公式函数调用组合函数;

2.   流程图

3.   代码

package one;

import javax.swing.JOptionPane;

public class two {

      public static void main(String[] args) {

             // TODO 自动生成的方法存根

             String num1,num2;

             int n,k;

             num1=JOptionPane.showInputDialog( "请输入第几行:");

             n=Integer.parseInt( num1 );

             num2=JOptionPane.showInputDialog( "请输入第几个:" );

             k=Integer.parseInt( num2 );

             JOptionPane.showConfirmDialog(null,zuhe(n-1,k),"组合", JOptionPane.CLOSED_OPTION);

      }

      public static int C(int n,int k) {

             if(n==1&&k==1)

                    return 1;     

             else if((n==2&&k==1)||(n==2&&k==2))

                    return 1;

             return zuhe(n,k);

      }

      public static int f(int n,int k) {

             int p=1;

             for(int i=1;i<n;i++) {

                   

                    for(int j=1;j<k;j++) {

                           p=C(n-1,k-1)+C(n-1,k);   

                    }

             }

            

             return p;

      }

     

     

      public static int zuhe(int n,int k){

             int p;

             p=jiecheng(n)/(jiecheng(k)*jiecheng(n-k));

            

             return p;

      }

      public static int jiecheng(int n) {

            

             if(n==1||n==0) {

                    return 1;

                   

             }

                   

                    return n=n*jiecheng(n-1);

      }

}

1. 设计思想

输入n,k;p=C(n-1,k-1)+C(n-1,k);

2.流程图

3.代码

   import java.util.Scanner;

public class Ncheng2 {

      public static void main(String args[]) {

            

             int n,k,tem;

             System.out.print("从n个中选k个,n=");

             Scanner scan=new Scanner(System.in);

             n=scan.nextInt();

             System.out.print("从n个中选k个,k=");

             k=scan.nextInt();

            

             tem=C (n,k);

            

             System.out.println("在"+n+"中选"+k+"个,有多少种方法:"+tem);

            

      }

      public static int C(int n,int k) {

             int x;

             if(n==k)

                    return 1;

             else if(k==1)

                    return n;

             else

                x=C(n-1,k)+C(n-1,k-1);

             return x;

      }

}

二、

1.设计思想

   输入有几个盘子,如果等于一,输出步骤,如果不等于,减一台词调用;

2. 流程图

 

3. 代码

import java.util.Scanner;

public class HanoiTower {

     

        public static void moveDish(int level, char from, char inter, char to) {

           

            if (level == 1) { 

                System.out.println("从" + from + " 移动盘子" + level + " 号到" + to); 

            }

           

            else {

              

                moveDish(level - 1, from, to, inter); 

                System.out.println("从" + from + " 移动盘子" + level + " 号到" + to); 

                moveDish(level - 1, inter, from, to);

               

            } 

        } 

       

       

        public static void main(String[] args) { 

           

            System.out.println("请选择:");

                    Scanner p=new Scanner(System.in);

                    int nDisks = p.nextInt();

            moveDish(nDisks, 'A', 'B', 'C'); 

           

        } 

    }

三、

1.设计思想

输入字符串区第一个字符为I ,第二个字符为j,如果等于,i++j--;一直到i=j,或者i>j;

2.流程图

4. 代码

import javax.swing.JOptionPane;

public class three { 

      public static void main(String[] args) {            

             String line=JOptionPane.showInputDialog("请输入字符串:");    

        int i=0;

        int j=line.length()-1;

        JOptionPane.showConfirmDialog(null, "是回文数么? "+three.judge(line,i,j), line, JOptionPane.CLOSED_OPTION);

      }

public static  boolean judge(String line,int i,int j) {

      if(line.charAt(i)==line.charAt(j))

      {

             if(i==j) {

                    return true;              

             }

            

             else if(i>j) {

                    return true;

             }

             else {

                    i++;       

                    j--;

                    return judge(line,i,j);

             }

      }

      else {

             return false;

            

      }

}

}

 

 

原文地址:https://www.cnblogs.com/liushiqiang123/p/7663499.html