pascal遞迴問題

時間 2022-09-16 05:40:03

1樓:漠_視

lz遞迴就是函式裡呼叫他本身 要找一個極限條件 讓他結束遞迴function f(n:longint):longint;

begin

if n=0 then f:=1; {極限條件讓遞迴結束}else f:=n*f(n-1);

...........

比如 求5!

第1次 他判斷了 5<>0 所以就執行下面的語句 然後得到5*f(4) 沒有結果 他就在這裡有呼叫他本身 對4判斷 依次類推 直到n=0時 他就有個結果 f(0)=1 然後 依次往前計算 著也就是所謂的歸..

2樓:匿名使用者

先問一句,你是不是學過basic?

pascal遞迴的函式和過程,不同於basic的gosub-return語句,

pascal的函式、過程中用begin-end括起來,在執行的時候有一個系統棧在那裡幫你處理遞迴下降與遞迴上升,你可以想象是偉大的pascal編譯器再幫你寫回歸的語句,多好,不用自己寫。

舉例function jiecheng(n:longint):longint;

begin

if n=0 then jiecheng:=1 else jiecheng:=n*jiecheng(n-1);

end;

在呼叫jiecheng(2)的時候,系統棧會記錄下你的呼叫,然後遞迴下去,再呼叫jiecheng(1)的時候,再記錄,到了jiecheng(0)時,函式返回1,然後jiecheng=1*1=1 (n=1)

jiecheng=2*1=2 (n=2)即可

3樓:諸神丶黃昏

5!=1*2*3*4*5 ;

可以寫一個 求 n 的階乘 的函式

function jie(n:integer):longint;

begin

if n=0 then jie:=1 else jie:=n*jiecheng(n-1);

end;

遞迴思一般定義

程式呼叫自身的程式設計技巧稱為遞迴( recursion)。

一個過程或函式在其定義或說明中又直接或間接呼叫自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的**量。遞迴的能力在於用有限的語句來定義物件的無限集合。一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。

當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。

注意:(1) 遞迴就是在過程或函式裡呼叫自身;

(2) 在使用遞迴策略時,必須有一個明確的遞迴結束條件,稱為遞迴出口。

遞迴演算法一般用於解決三類問題:

(1)資料的定義是按遞迴定義的。(fibonacci函式)(2)問題解法按遞迴演算法實現。(回溯)

(3)資料的結構形式是按遞迴定義的。(樹的遍歷,圖的搜尋)

4樓:匿名使用者

在pascal中,遞迴語句下面的語句,是會儲存在系統棧裡的,當所有遞迴語句完成以後,就會從系統棧中開始做,由於棧先進後出的特點,就會從最後返回去做,也就是「歸」

pascal遞迴的方法做問題

我直接寫出最重要的把,只寫子程式好了。3 procedure f x,s longint begin if x 0 then begin writeln s exit end f x div 10,s 10 x mod 10 end 主程式中 f x,0 x是要顛倒的數 6 procedure f ...

求pascal遞迴演算法教程,free pascal用遞迴的方法編寫函式求fibonacci級數

我也不會。我學c和c 的。抱歉 free pascal用遞迴的方法編寫函式求fibonacci級數 function fibonacci n integer int64 begin if n 0 or n 1 then fibonacci 1else fibonacci fibonacci n 1 ...

pascal問題,pascal 問題

你錯在寫的程式太長了。program asfl vars string i,j,b longint a array 1.10 of longint begin readln s i 1 j 1 while ibegin inc i if s i then delete s,i,1 end for i...