C prime plus》遞迴學習及問題

2021-10-24 11:35:27 字數 662 閱讀 9020

#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 ...

遞迴及練習

分析 遞迴的思想,舉個例子吧!電影院看電影院,當你去晚了,然後從最後一排問,你是第幾排,一直問到第一排,然後第一排的人又以相同的方式傳回來,重複做相同的工作,先去傳遞 你是第幾排 這個問題,然後回歸給自己 我是第幾排 得到結果。自己呼叫自己,會出現無限迴圈的問題 死迴圈 所以必須有跳出,結束條件,才...