C 的遞迴函數

用遞迴計算 s(n)=1+..+n

檔案: s10.c

#include <stdio.h>

int s(int n) {
  if (n==1) return 1;
  int sn = s(n-1)+n;
  return sn;
}

int main() {
  printf("s(10)=%d", s(10));
}

執行結果:

D:\Dropbox\cccwd\db\c\code>gcc s10.c -o s10

D:\Dropbox\cccwd\db\c\code>s10
s(10)=55

印出中間過程

檔案: recursive.c

#include <stdio.h>

int s(int n) {
  if (n==1) return 1;
  int sn = s(n-1)+n;
  printf("s(%d)=%d\n", n, sn);
  return sn;
}

int main() {
  printf("s(10)=%d", s(10));
}

執行結果:

D:\Dropbox\cccwd\db\c\code>gcc recursive.c -o recursive

D:\Dropbox\cccwd\db\c\code>recursive
s(2)=3
s(3)=6
s(4)=10
s(5)=15
s(6)=21
s(7)=28
s(8)=36
s(9)=45
s(10)=55
s(10)=55