反向計算數值
已知班上有 10 個同學,考試成績如下:
10 號同學比 9 號同學多出 3 分
9 號同學比 8 號同學多出 12 分
8 號同學比 7 號同學多出 -5 分
7 號同學比 6 號同學多出 7 分
6 號同學比 5 號同學多出 -8 分
5 號同學比 4 號同學多出 1 分
4 號同學比 3 號同學多出 10 分
3 號同學比 2 號同學多出 -4 分
2 號同學比 1 號同學多出 6 分
1 號同學成績為 67 分

請輸出全班學生成績
若遞迴函數 score(n) = 輸出全班成績
則 score(n) 必須先輸出前 n-1 個學生成績,並將第 n-1 位學生的成績,補上差值才是 第 n 位學生成績。
假設每一位學生與前面學生成績的差值放在一個全域變數陣列 t[],則第 n 位學生成績與前面學生成績差值為 t[n-1]。
那麼依題意 t[1]=6; t[2]=-4; t[3]=10; ....可在程式碼中宣告
int t[]={0, 6, -4, 10, 1, -8, 7, -5, 12, 3};
如此,第 n 號學生成績為第 n-1 號學生成績 + t[n-1]
則下列函數的設計方式如下:
遞迴兩個主要因素:
    A.score(n) 與 score(n-1) 的關係為 score(n) = score(n-1)+t[n-1]
    B.score(1) = 67


迴圈版
遞迴版

#include <stdio.h>
#include <stdlib.h>

int t[]={0, 6, -4, 10, 1, -8, 7, -5, 12, 3};

int main(){
int i, score;
score=67;
printf("1. %d\n",score);
for(i=2;i<=10;i++){
score+=t[i-1];
    printf("%d. %d\n",i,score);
}
printf("%d^%d = %d\n",x,n,k);
return(0);
}

#include <stdio.h>
#include <stdlib.h>

int t[]={0, 6, -4, 10, 1, -8, 7, -5, 12, 3};

int score(int n){
    if(n==1){
        printf("1. 67\n");
        return(67);
    }
    else{
        int s;
        s=score(n-1)+t[n-1];
        printf("%d. %d\n", n, s);
        return(s);
    }
}

int main(){
score(10);
}