2016年4月18日 星期一

99 乘法表的 functional programming 寫法

99 乘法表用兩個 loop 就結束了, 這麼簡單的方法改為用 fp 思維就變得很難了。難怪流行不起來, 門檻太高了。要去習慣 recursive 的思考方式真的不容易。

這裡有個很棒的討論: 漫談 lisp、scheme、ML

不用 assign 來寫程式的思考方式就是 functional programming, 如果用了 loop, 就會有 x=x+1 的行為, 這是 assign, 所以只好用上 recursive, 有夠難, 想了半天。

loop 真是老天爺送給我這平凡程式員最好的禮物了。

99.cpp
 1 #include <cstdio>
 2 
 3 using namespace std;
 4 
 5 void func1(int i, int j)
 6 {
 7   if (j > 9)
 8   {
 9     return;
10   }
11   else
12   {
13     printf("%2d *%2d = %2d\n",i, j, i*j);
14     func1(i, j+1);
15   }
16 }
17 
18 void func(int i, int j)
19 {
20   if (i > 9)
21   {
22     return;
23   }
24   else
25   {
26     printf("%2d *%2d = %2d\n",i, j, i*j);
27     func1(i, j+1);
28     func(i+1, j);
29   }
30 }
31 
32 int main(int argc, char *argv[])
33 {
34   func(1, 1);
35   return 0;
36 }

沒有留言:

張貼留言

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。