遞迴的使用問題 |
尚未結案
|
wttmama
一般會員 發表:1 回覆:0 積分:0 註冊:2004-03-23 發送簡訊給我 |
function FibDynamic(n:integer):integer;
var
tmp: integer;
knowF : array[0..100] of integer;
begin
tmp := n;
if (knowF[n] <> 0) then
FibDynamic := knowF[n]; //這一行會跑不到
if ( n > 1 ) then
begin
tmp := FibDynamic( n - 1 ) FibDynamic( n - 2 );
end;
knowF[n] := tmp;
result := knowF[n];
end;
問題就如上面註解的部份…
這是我的程式碼,因為我接觸delphi沒多久,做了這個演算法。
但是,因為沒有return可用,沒辦法在第一次判斷就跳出fuction
想了好久,還是沒辦法解決,請問有誰遇過這問題嗎?
請指教^^
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
呵呵..問問題問到這兒來啦..
我剛在打電動啦...
尼NEW一個CONSOLE APPLICATION..然後打下列的...
program FIB; {$APPTYPE CONSOLE} uses SysUtils; var FibArry:array of integer; input,i:integer; //---------------------------以上是宣告變數----------------------------- function FibDynamic(n:integer):integer; var tmp: integer; begin tmp := n; if (FibArry[n] <> 0) then begin result := FibArry[n]; //這一行會跑不到 writeln('這行有跑到...'); exit; //離開函式 end; if ( n > 1 ) then begin tmp := FibDynamic( n - 1 ) + FibDynamic( n - 2 ); end; FibArry[n] := tmp; result := FibArry[n]; end; //---------------------------以下是主程式---------------------------- begin input:=8; setlength(FibArry,input); writeln(format('Fib(%d)=%d',[input,FibDynamic(input)])); for i:=0 to input-1 do write(format('%4d',[FibArry[i]])); readln; end.執行結果....... 如果尼把EXIT拿掉...會多跑很多次...如下圖....................................... 6點了啦..明天PYTHON尼要負責給我MORNING CALL 喔!! 發表人 - |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |