2015-09-27 120 views
1

請告訴我我在哪裏錯了,我無法罰款2個程序中的錯誤。我嘗試在pascal中使用遞歸。我不知道爲什麼程序沒有運行

這一個正在運行,但它給了我錯了resuts

program fatorial; 
var 
    n: integer; 

function f(n: longint): longint; 
begin 
    if((n=0) or (n=1)) then 
    f:=1 
    else 
    *f:= n*f(n-1);* 
    read(f); 
end; 

begin 
    write('n:='); read(n); 
    f(n); 
    write('result:', f(n)); 
    readln; 
end. 

這個人告訴我「錯誤:非法的表達」,但我不知道如何解決它

program Greatest_common_divisor; 
var 
    gcd,p,q: integer; 
    r:=real; 
begin 
    write('p:'); read(p); 
    write('q:'); read(q); 
    r:= p mod q; 
    if r <> o then 
    begin 
    p:=q; 
    q:=r 
    *gcv:= gcv(q,r);* 
    end; 
    write('Greatest common divisor:', gcv(p.q)); 
    readln; 
end. 
+0

你的第一個程序給出正確的結果,如果你擺脫'讀(F)'。那是爲什麼?你必須從'* f:= n * f(n-1); *'外面去掉星號。我不確定你爲什麼在那裏。爲什麼你自己在線上有額外的'f(n);'呼叫?它沒有任何用處。結果不存儲。對於你的第二個函數,爲什麼你在'gcv:= gcv(q,r)'周圍有星號? gcv定義在哪裏?和'gcv(p.q)'是無效的,因爲你有一段時間,而不是逗號。 – lurker

+0

星號可能是強調(顯示遞歸)從他複製這個關閉的維基或論壇頁面:-) –

+0

@MarcovandeVoort我認爲星號是突出顯示的東西。我列舉了OP需要解決的其他一些問題。我認爲他們對於他們傾向於他們的問題的基本意識,因爲來源也是一個理想的目標。 :) – lurker

回答

1
  1. 您不應該在函數中讀取f

  2. 你應該寫一個函數,而不是使用內部功能gcv()

0

第一個問題:

  1. 我認爲在功能閱讀f是不正確的。

但第二個問題:

  1. 不要使用命令:=r:=real;,只有:
  2. ogcv是什麼樣的變數?您在var之後沒有識別ogcv
  3. ;q:=r
相關問題