剑指Offer46 求1+2+...+n
1 /************************************************************************* 2 > File Name: 46_Accumulate.c 3 > Author: Juntaran 4 > Mail: JuntaranMail@gmail.com 5 > Created Time: 2016年09月04日 星期日 21时18分28秒 6 ************************************************************************/ 7 8 #include <stdio.h> 9 10 // 函数指针法求1+2+...+n 11 typedef unsigned int (*fun)(unsigned int); 12 13 unsigned int sum_T(int n) 14 { 15 return 0; 16 } 17 18 int Sum1(int n) 19 { 20 static fun f[2] = {sum_T, Sum1}; 21 return n + f[!!n](n-1); 22 } 23 24 // 递归 25 int Sum2(int n) 26 { 27 int sum = n; 28 int ans = (n>0) && (sum+=Sum2(n-1)); 29 return sum; 30 } 31 32 int main() 33 { 34 int n = 7; 35 int ret1 = Sum1(n); 36 int ret2 = Sum2(n); 37 printf("ret1 is %d\n", ret1); 38 printf("ret2 is %d\n", ret2); 39 40 return 0; 41 }