2014年3月28日 星期五

C語言 - 累加總合 使用迴圈與遞迴

- 使用迴圈
結束條件: i > n

sum = 1
= 1 + 2
= 1 + 2 + 3
= 1 + 2 + 3 + ...
= 1 + 2 + 3 + ... + (n - 3)
= 1 + 2 + 3 + ... + (n - 3) + (n - 2)
= 1 + 2 + 3 + ... + (n - 3) + (n - 2) + (n - 1)
= 1 + 2 + 3 + ... + (n - 3) + (n - 2) + (n - 1) + n
#include <stdio.h>

int main(int argc, char *argv[])
{
 int i, n, sum = 0;

 printf("Enter a number: ");
 scanf("%d", &n);

 for (i = 1; i <= n; i++)
  sum +=i;

 printf("sum = %d\n", sum);
 return 0;
}
- 使用遞迴
結束條件: n == 1

calc(n) = calc(n - 1) + n
= calc(n - 2) + (n - 1) + n
= calc(n - 3) + (n - 2) + (n - 1) + n
= ...
= calc(3) + ... + (n - 3) + (n - 2) + (n - 1) + n
= calc(2) + 3 + ... + (n - 3) + (n - 2) + (n - 1) + n
= calc(1) + 2 + 3 + ... + (n - 3) + (n - 2) + (n - 1) + n
= 1 + 2 + 3 + ... + (n - 3) + (n - 2) + (n - 1) + n
#include <stdio.h>

int calc(int n)
{
 if (n == 1)
  return 1;

 return calc(n - 1) + n; 
}

int main(int argc, char *argv[])
{
 int n, sum;

 printf("Enter a number: ");
 scanf("%d", &n);
 sum = calc(n);

 printf("sum = %d\n", sum);
 return 0;
}

沒有留言:

張貼留言