【正文】
1 F a c t o r i a l ( 0 )F a c t o r i a l ( 2 ) = 2 F a c t o r i a l ( 1 )F a c t o r i a l ( 3 ) = 3 F a c t o r i a l ( 2 )F a c t o r i a l ( 5 ) = 5 2 4F a c t o r i a l ( 4 ) = 4 6F a c t o r i a l ( 3 ) = 3 2F a c t o r i a l ( 2 ) = 2 1F a c t o r i a l ( 1 ) = 1 1遞歸實現(xiàn)過程 —— 遞推和回推 fac fac(5)=5 fac(4) fac fac fac fac fac fac fac (1) fac(4)=4 fac(3) fac(3)=3 fac(2) fac(2)=2 fac(1) 30 非遞歸算法求 n! static long fac(int n) { long f=1。 else return s(n1)+n。 當 64個金片全部由最初的那根針上移動到另一根針上時,這世界就在一聲霹靂中消失。 //獲得除 2后的余數(shù) s=t+s。 //拼接 n=n/2。 //保存二進制數(shù) do { t=n%2。 //保存某位二進制 String s=。無論白天和黑夜,都有一位僧侶負責移動這些金片。 else return n*fac(n1)。 } 22 第 4 章習題 6 程序 23 參數(shù)傳遞 ? 參數(shù)傳遞規(guī)則 ? 調(diào)用帶參數(shù)的方法時,必須提供實參 ? 實參 ? 形參 ,稱為 參數(shù)傳遞 ? 被調(diào)用的 方法用實參執(zhí)行方法體 ? 實參可以是常量、變量、表達式 ? 所有類型的參數(shù)傳遞都是“ 值傳遞 ” ?調(diào)用時把實參的值傳遞給形參 ?問題 ? 如果形參變了,實參會變嗎? 24 【 例 45】 交換兩個變量的值 運行結(jié)果 調(diào)用前: u=23 v=10 交換前: x=23 y=10 交換后: x=10 y=23 調(diào)用后: u=23 v=10 25 【 例 45】 值傳遞的例子 ?運行的結(jié)果 調(diào)用前: u=23 v=10 交換前: x=23 y=10 交換后: x=10 y=23 調(diào)用后: u=23 v=10 ?說明 ? 參數(shù)傳遞: u ? x ; v ? y ? 調(diào)用前后: u、 v 的值沒有變 ? 交換前后: x、 y的值改變了 26 遞歸 ?用自身的結(jié)構(gòu)來描述自身 ?典型例子 —— 階乘運算 ?遞歸就是自己調(diào)用自己 27 【 例 46】 采用遞歸算法求 n! ?求 n! 的算法 ? n! = n (n1)! ? (n1)! = (n1) (n2)! ? (n2)! = (n2) (n3)! ? …… ? 2! = 2 1! ? 1! = 1 ?遞歸定義 fac(n) = n! ? fac(n) = n* fac(n1) ? fac(n