#include
long
fact
(int n)
;int
main
(void
)long
fact
(int n)
能夠正確執行。
第13行改為:
val = n *
fact
(n--
);
出現異常:棧溢位。原因未知
補充原因:遞減運算子在語句中運算優先順序導致的。後置的遞減先將n的值傳入的函式,在減1。同樣,前置遞減雖然n減1後再傳入函式,但會改變語句中地1個n的值,使結果出錯。
因此,在給函式傳遞引數時應該盡量避免使用遞增和遞減。
9.3.2
(1)遞迴函式中位於遞迴呼叫之前的語句,按被調函式的順序執行;
(2)遞迴函式中位於遞迴呼叫之後的語句,按被調函式相反的順序執行。
9.3.4
void
myfun
(int num)
;int
main()
void
myfun
(int num)
遞迴及遞迴的特例
1.定義 在乙個函式過程 現直接或間接呼叫函式本身,稱為函式的遞迴呼叫。eg 有乙個學生在一起,問第五個學生有多少歲,他說比第4個學生大2歲。問第四 個人多少歲,他說比第三個人大兩歲。問第三個人有多少歲,第三個人說他比第二 個人大兩歲。問第二個人多少歲,第二個人說他比第乙個人大兩歲。第乙個人10歲。...
遞迴函式及尾遞迴
自己呼叫自己的函式,一去一回就是遞迴函式 示例一 def digui n print n,1 if n 0 digui n 1 print n,2 digui 5 示例二 階乘 num 1 def func n global num if n 0 func n 1 num n return num ...
遞迴及練習
分析 遞迴的思想,舉個例子吧!電影院看電影院,當你去晚了,然後從最後一排問,你是第幾排,一直問到第一排,然後第一排的人又以相同的方式傳回來,重複做相同的工作,先去傳遞 你是第幾排 這個問題,然後回歸給自己 我是第幾排 得到結果。自己呼叫自己,會出現無限迴圈的問題 死迴圈 所以必須有跳出,結束條件,才...