結束條件: 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; }
沒有留言:
張貼留言