用函式遞迴關係加總範圍內所有數字

#include<stdio.h>
int sum(int);
int main(){
int n;
scanf("%d",&n);
printf("%d",sum(n));
return 0;
}
int sum(int n){
if(n==1){
return n;
}
return sum(n-1)+n;
}
//關於return sum(n-1)+n
//把範圍中的最大值-1傳過去給函式,之後再回來加最大值,換言之每次呼叫函式的值都會遞減1,直到達成if條件1==1,最後呼叫的函式就是傳回給前一個函式sum=1,然後再加上此函式最大值2,依此往前推。

//範例說明:
//n=5,呼叫第一次的return sum(5-1)+5;第二次呼叫return sum(4-1)+4;類推sum(3-1)+3...sum(2-1)+2...直到n==1再推回來倒數第二函式sum(2-1)+2即為1+2,類推回去sum(2-1)+3......sum(5-1)+5
//if完成的1加上倒數第二+2....+3+4+5,可能要想像一下。
sum(n-1) 【前面所呼叫函式的積】     +     n【範圍最大值】

留言