再帰の例

for文を用いて1から100までの総和を求める

#include <stdio.h>

int main()
{
  int   i;
  int   sum = 0;            /* 合計を入れる変数を0に */

  for(i = 0; i <= 100; i++) /* "<="に注意 */
    sum += i;
  printf("sum is %d\n", sum);

  return 0;
}

再帰を用いて1から100までの総和を求める

func(n)1からnまでの総和を求める関数だとすると, n + 1 + func(n)は,1からn+1までの総和. 同様に,n + func(n-1)1からnまでの総和となる(*2). ただし,n1の時は,1 + func(0)となるが, 1から0までの総和を求めるのはおかしいので, n1の時は,総和として1を返すようにする(*1).
#include <stdio.h>

int func(int i);                /* プロトタイプ宣言 */

int main()
{
        printf("sum is %d\n", func(100));
        return 0;
}

/* 0からiまでの総和を求める */
int func(int i)
{
        if(i == 1) return 1;    /* 再帰終了(*1) */
        /* 1でなければ */
        return i + func(i - 1); /* 再帰して計算(*2) */
}

Copyright (C) 2000 by Tomoyuki Yashiro