求1+2+…+n,學習
要求不能使用乘除法、for、while、if、else、switch、case等關鍵字以及條件判斷語句(A?B:C)。spa
網上看到一種宏定義的寫法不是很理解,還有一種遞歸的寫法,很巧妙,學習了。
code
#include <stdio.h> #include <stdlib.h> int sum(int n) { int tmp = 0; (n)&&(tmp = sum(n-1));//當n=0時,再也不執行(tmp = sum(n-1)) return n+tmp; } int main(void) { printf("1+2+...+100 = %d\n",sum(100)); return 0; }
關於那段宏定義,我再看看,稍後貼出遞歸