全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:958
推到 Plurk!
推到 Facebook!

遞迴的使用問題

尚未結案
wttmama
一般會員


發表:1
回覆:0
積分:0
註冊:2004-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-23 04:32:35 IP:203.204.xxx.xxx 未訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-23 05:36:48 IP:218.165.xxx.xxx 未訂閱
呵呵..問問題問到這兒來啦.. 我剛在打電動啦... 尼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 喔!! 發表人 -
系統時間:2024-05-17 16:03:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!