精華區beta C_and_CPP 關於我們 聯絡資訊
※ 引述《hardcover (精裝版喔)》之銘言: : 我是覺得代寫作業也沒什麼不好 : 不過前題是,寫出來的東西要夠創意 : 例如:排序用兩個loop,你一個就出來了 : 第一次看到九九乘法的作業是遞迴跑出來的 : 時候我也覺得有蠻多收獲的 XD 用遞迴方式,我試著寫了兩種版本,一種是用普通的 function, 一種是用 template。 感覺不太有趣,畢竟不如迴圈寫法簡潔明快。 template 的比較新奇一點點,但可惜不能在執行時期指定乘法表的 上下限數字。 // 9x9 multiplication table. recursive function version #include <iostream> using std::cout; void nine_nine(int A = 0, int B = 0) { static int beg = A, end = B; static int a = A, b = 1; cout << a << " * " << b << " = " << a * b << '\n'; if (b == end && a == end) return; else if (b == end) { a++; b = beg; nine_nine(); } else { b++; nine_nine(); } } int main() { nine_nine(1,9); } /*--------------------------------------------------------------*/ // 9x9 multiplication table. class template recursive ctor version #include <iostream> using std::cout; template <int beg, int end> struct Nine_Nine { Nine_Nine() { static int a = beg, b = 1; cout << a << " * " << b << " = " << a * b << '\n'; if (b == end && a == end) return; else if (b == end) { a++; b = beg; Nine_Nine(); } else { b++; Nine_Nine(); } } }; int main() { Nine_Nine<1,9> nine_nine; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.208.166 > -------------------------------------------------------------------------- < 作者: cplusplus (永夜) 看板: C_and_CPP 標題: Re: [碼] 9x9 乘法遞迴寫法兩種 時間: Tue Jun 14 03:36:31 2005 #include<iostream> using namespace std; template<int A,int B> struct T { T(){ cout<<A*B<<' '; T<A,B+1>(); } }; template<int A> struct T<A,10> { T(){ cout<<endl; T<A+1,1>(); } }; template<int B> struct T<10,B>{}; int main() { T<1,1>(); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.205.46
Frozenmouse:讓我想到Prolog...|||220.137.235.177 06/14
jeunder:metaprogramming 是很有趣的技巧 61.230.216.86 06/14
aecho:好神奇 @@ 220.130.11.237 06/14
khoguan:對呀。拋磚引玉成功 @^^@220.130.208.166 06/14
sekya:這個的效率應該很好吧...理論上展開後就... 59.104.35.234 06/14
cplusplus:在這個例子裡並不好 並不是單純展開 :) 140.115.205.46 06/15
cplusplus:應該同遞迴深度100層吧 XD 140.115.205.46 06/15