1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式進行遞歸編程實現求組合數C(m,n)的功能java
2 m,n 要經過命令行傳入算法
3.正常狀況下用JDB調試程序c(X,2),X爲學號最後一位+3編程
import java.util.Scanner; class ZuHeShu{ int zuheshu (int n,int m){ if(m==1) return n; else if(m==0) return 1; else if(m==n) return 1; else if (n>m&&m>1&&n>1) return zuheshu(n-1,m-1)+zuheshu(n-1,m); else return -1; } } public class diedai { public static void main(String[] args) { Scanner reader = new Scanner (System.in); System.out.println("輸入m:"); int m=reader.nextInt(); System.out.println("輸入n:"); int n=reader.nextInt(); ZuHeShu a =new ZuHeShu(); if(a.zuheshu(n,m)==-1) System.out.println("輸入數據有誤"); else System.out.println("C(n,m)="+a.zuheshu(n,m)); } }
1.正常狀況學習
2.異常狀況測試
3.邊界狀況命令行
1.使用JDB調試,並將斷點設置至main處,以下圖:
調試
2.使用step
指令使代碼運行至須要輸入數據處
code
發現調試出現錯誤,並提示找不到源文件。鑑於JDB沒有設置條件斷點功能,所以換IDEA進行調試blog
3.根據題目要求,在IDEA中調試,學號尾數爲2,故X=5
遞歸
解決辦法一:通過屢次嘗試和規律探尋,發現問題地關鍵在於:因爲編程實現組合數是經過迭代算法,組合數在m=1,m=n,m=0
等這些 基底狀況 時須要用if語句單獨討論。
解決辦法二:使用IDEA進行調試並能夠使用條件斷點做爲幫助。