02-方法

一、

1。(1)设计思想:

   先利用递归写出求阶乘的函数,然后调用这个函数求出组合数。

(2)程序流程图:

(3)程序源码:

 1 //信1605-1 康旭阳  20163608
 2 import java.util.Scanner;
 3 public class text1_1 {
 4     public static void main (String[] args){
 5         int k=0,n=0,C=0,d=0;
 6         Scanner input=new Scanner (System.in);
 7         System.out.println("请分别输入n和k:");
 8         n=input.nextInt();
 9         k=input.nextInt();
10         if (k>n){
11             System.out.println("输入错误!");
12             return;
13         }
14         C=jiecheng(n)/(jiecheng(k)*(jiecheng(n-k)));
15         d=jiecheng(k)*(jiecheng(n-k));
16         C=jiecheng(n)/d;
17         System.out.println("该组合数的结果为:"+C);
18     }
19     public static int jiecheng(int a){
20         int b=0;
21         if (a==1)
22             b=1;
23         else
24             b=a*jiecheng(a-1);
25         return b;
26         }
27 }

(4)结果截图:

2。(1)设计思想:

定义一个二维数组Y存储杨辉三角形,循环赋值构造杨辉三角形:Y[i][0] = 1,Y[i][i] = 1,(i = 0,1,2……n),其余每个Y[i][j] = Y[i - 1][j - 1] + Y[i - 1][j]。则C(n,k)就等于Y[n][k]。

(2)程序流程图:

(3)程序源码:

 1 //信1605-1 康旭阳 20163608
 2 import java.util.Scanner;
 3 public class text1_2 {
 4     public static void main(String[] args){
 5         System.out.println("请分别输入n和k:");
 6         Scanner input=new Scanner(System.in);
 7         int n=input.nextInt();
 8         int k=input.nextInt();
 9         System.out.println("该组合数的结果为:"+T(n,k));
10     }
11     public static int T(int n,int k){
12         int[][]Y=new int [n+1][n+1];
13         Y[0][0]=1;
14         for(int i=0;i<n+1;i++)
15         {
16             Y[i][0]=1;
17             Y[i][i]=1;
18         }
19         for (int i=2;i<n+1;i++)
20         {
21             for(int j=1;j<i;j++)
22             {
23                 Y[i][j]=Y[i-1][j-1]+Y[i-1][j];
24             }
25         }
26         return Y[n][k];
27     }
28 }

(4)结果截图:

 3。(1)设计思路:

按照所给公式用递推的方式表示,然后输出n和k求值。

(2)程序流程图:

(3)程序源码:

 1 //信1605-1 康旭阳  20163608
 2 import java.util.Scanner;
 3 public class text1_3 {
 4     public static void main (String[] args){
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请分别输入n和k");
 7         int n=input.nextInt();
 8         int k=input.nextInt();
 9         if (k>(n+1)){
10             System.out.println("输入错误!");
11             return;
12             }
13         else
14             System.out.println("该组合数的结果为:"+zuheshu(n,k));
15         }
16     public static int zuheshu(int n,int k){
17         int C=0;
18         if (k==0||(n+1)==k)
19             C=1;
20         else
21             C=zuheshu(n-1,k-1)+zuheshu(n-1,k);
22         return C;
23     }
24 
25 }

(4)结果截图:

二、

(1)设计思路:

当盘子的个数为1时,直接从柱子1移动到柱子3;

n>1时,可将其分为三个步骤:

(1)将上面n-1个盘子从柱子1移到柱子2上。

(2)将剩下的一个盘子从柱子1座移到柱子3上。

(3)将柱子2上的n-1个盘子从柱子2移动到柱子3上。

(2)程序流程图:

(3)程序源码:

 1 //信1605-1 康旭阳  20163608
 2 import java.util.Scanner;
 3 public class text2 {
 4     public static void main (String[] srgs){
 5         Scanner input=new Scanner (System.in);
 6         System.out.println("请输入塔的层数:");
 7         int num=input.nextInt();
 8         final int zhuzi1=1,zhuzi2=2,zhuzi3=3;
 9         yidong(num,zhuzi1,zhuzi3,zhuzi2);
10     }
11     public static void yidong(int num,int zhuzi1,int zhuzi3,int zhuzi2){
12         if(num==1)
13             System.out.println(zhuzi1+"移动至"+zhuzi3);
14         else{
15             yidong(num-1,zhuzi1,zhuzi2,zhuzi3);
16             System.out.println(zhuzi1+"移动至"+zhuzi3);
17             yidong(num-1,zhuzi2,zhuzi3,zhuzi1);
18             }
19         }
20 }

(4)结果截图:

三、

(1)设计思路:

首先将字符串的第一个和最后一个字符做比较,然后利用递归,再将剩下的字符串的第一个和最后一个字符作比较,直到字符串长度为1或者0。

(2)程序流程图:

 (3)程序源码:

 1 //信1605-1  康旭阳  20163608
 2 import java.util.Scanner;
 3 public class text3 {
 4     public static void main(String[] args){
 5         Scanner input=new Scanner (System.in);
 6         System.out.println("请输入一个字符串:");
 7         String zfc=input.next();
 8         boolean a=huiwen(zfc);
 9         if (a==true)
10             System.out.println("该字符串回文。");
11         else
12             System.out.println("该字符串不回文。");
13     }
14     public static boolean huiwen(String zfc){
15         int m=zfc.length();
16         char a=zfc.charAt(0);
17         char b=zfc.charAt(m-1);
18         if(m==0||m==1)
19             return true;
20         if(a==b)
21             return huiwen(zfc.substring(1,m-1));
22         else
23             return false;
24     }
25 
26 }

(4)结果截图:

原文地址:https://www.cnblogs.com/kangxy/p/7663911.html