课程作业1
1使用組合數(shù)公式利用n!來(lái)計(jì)算
a.設(shè)計(jì)思想
定義n和k,用遞歸函數(shù)表示出N!的階乘結(jié)果,c(n,k)=n!/(k!(n-k)!);調(diào)用函數(shù)求出c(n,k)的結(jié)果
b.源代碼
package kecheng1; import java.util.Scanner; public class Test {public static void main(String[] args) {System.out.print("請(qǐng)輸入N:");Scanner s=new Scanner(System.in);int n=s.nextInt();System.out.print("請(qǐng)輸入:k") ;int k=s.nextInt();System.out.println(n+"!="+ca(n));double x=ca(n)/(ca(k)*ca(n-k));System.out.println(x);}public static long ca(int n) {if(n==1 || n==0){return 1;}return n*ca(n-1);}//遞歸函數(shù) }c.流程圖
d.結(jié)果截圖
2.使用遞推的方法用楊輝三角形計(jì)算
a.程序設(shè)計(jì)思想
利用遞推的方法和楊輝三角計(jì)算出組合數(shù)的結(jié)果,將輸入的變量NK表示為楊輝三角的行和列,利用二位數(shù)組具體求出楊輝三角的數(shù)值,最后輸出需要的組合數(shù)的數(shù)值
b.源代碼
package kechengab;import java.util.Scanner; public class Dituiyh {public static void main(String[] args){Scanner put=new Scanner(System.in);System.out.println("輸入行:");int x=put.nextInt();System.out.println("輸入列:");int y=put.nextInt();if(y>x)System.out.print("輸入的數(shù)據(jù)錯(cuò)誤");int [][]a=new int[6][6];for(int i=0;i<=x;i++){for(int s=0;s<=i;s++){if(s==i||s==0)a[i][s]=1;else{a[i][s]=a[i-1][s-1]+a[i-1][s];}}}//利用二維數(shù)組楊輝三角的表示System.out.println("組合數(shù)c(x,y)的值為"+a[x][y]);//輸出要求的值 }}c.程序流程圖
d.結(jié)果截圖
3.漢諾塔
a.程序設(shè)計(jì)思想
調(diào)用遞歸函數(shù),終止條件為參數(shù)N=1;移動(dòng)盤(pán)子時(shí),利用兩個(gè)函數(shù),將盤(pán)子移動(dòng),利用中間的b柱子作為跳板,遞歸函數(shù)求出具體步驟,引用另一個(gè)函數(shù)具體輸出盤(pán)子移動(dòng)的步驟
b.程序源代碼
package hannuota; import java.util.Scanner; public class Peg {static private int n = 0;public static void main(String[] args) {Scanner in = new Scanner(System.in);char one = 'A';char three = 'B';char two= 'C';System.out.println("輸入盤(pán)子數(shù)");int num = in.nextInt(); hanni(num,one,three,two);in.close();}private static void move(int num,char start,char end){n=n+1;System.out.println(n+"步操作盤(pán)子從:"+start+"-->"+end);}//函數(shù)表示出具體的盤(pán)子移動(dòng)的方法private static void hanni(int num,char one,char three,char two) {if(num==1){move(1,one,two);}else{hanni(num-1,one,three,two);move(num,one,two); hanni(num-1,three,one,two);}}//遞歸的方法求出盤(pán)子移動(dòng)軌跡}c.流程圖
d結(jié)果截圖
4.回文數(shù)
a程序設(shè)計(jì)思想
定義字符串儲(chǔ)存想要的驗(yàn)證的字符串,定義一個(gè)數(shù)組儲(chǔ)存,將兩個(gè)數(shù)組首尾進(jìn)行比較,結(jié)束條件為比較到數(shù)組的中值處
b.源代碼
package huiwen;import java.util.Scanner;public class Dihuiwen {public static void main(String[] args) {Scanner put =new Scanner(System.in);System.out.println("輸入字符串:");String a = put.nextLine();//定義字符串char[] ch = new char[a.length()];for(int i = 0;i<a.length();i++){ch[i] = a.charAt(i);}//將字符穿賦值給數(shù)組if(zifu(ch,ch.length)==0)//引用函數(shù)體 {System.out.println("該字符串不是回文!");}else{System.out.println("該字符串是回文!");}// put.close(); }private static int zifu(char[] c,int i) {int size = c.length;if(i == size/2){return 1;}if(c[size - i] == c[i-1]){return zifu(c,i-1);}elsereturn 0;} //遞歸函數(shù)判斷字符串是否為回文數(shù) }c.流程圖
d.結(jié)果截圖
?
?總結(jié)
該課程主要練習(xí)了遞歸函數(shù)以及隨機(jī)數(shù)的運(yùn)用,雖然完成了部分課題,但是自我感覺(jué)對(duì)于隨機(jī)數(shù)的運(yùn)用,以及對(duì)于遞歸函數(shù)掌握還沒(méi)有到達(dá)非常熟練的地步,在以后的練習(xí)中,自己還需要對(duì)這兩方面內(nèi)容進(jìn)行更加全面的認(rèn)識(shí)以及掌握。
?
轉(zhuǎn)載于:https://www.cnblogs.com/xuzhaoyang/p/7663877.html
總結(jié)
- 上一篇: 95533是什么电话?95533电话是干
- 下一篇: 【每周一图】蜂鸟