pascal遞迴的方法做問題

時間 2022-02-05 11:45:03

1樓:匿名使用者

我直接寫出最重要的把,只寫子程式好了。

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(x,s,t:longint);

begin

if t=0 then begin writeln(s);exit;end;(我直接用顛倒數字,為了防止最後的零不輸出,我就設定了位數)

f(x div 10,s*10+x mod 10,t-1);

end;

procedure f1(x,s:longint);

vart:longint;

begin

if x=0 then begin f(s,0,t);end;

t:=t+1;

f(x div m,s*10+(x mod m));

end;

主程式中:readln(m);(進位制);f1(x,0);(x是要換進位制的數);

如果用陣列的話可以更好一點,我這樣直接

2樓:匿名使用者

遞迴麼?

3:直接字串讀入,用delete刪除空格然後length長度,倒序輸出就ok啦。

6:。。。包括負進位制麼。。。

以下是大於等於2進位制的(不能用於高精數)n進位制轉成m進位制var (nz是原來的進位制,mz是要轉換的進位制,str是要轉的數)str: string;

nz, mz: 2..36;

a: byte;

i, n, j, k, m: integer;

h: int64;

a1: array[1..60] of integer;

function e(x, y: integer): int64;

varz: integer;

begin

e := 1;

for z := 1 to y do

e := e * x;

end;

begin

readln(nz);

readln(mz);

readln(str);

i := length(str);

n := 0;

h := 0;

for j := i downto 1 dobegin

if a < 10 then

a := ord(str[j]) - ord('0')else

a := ord(str[j]) - ord('a');

h := h + a * e(nz, n);

n := n + 1;

end;

m := 1;

while h <> 0 do

begin

j := h mod mz;

h := h div mz;

a1[m] := j;

m := m + 1;

end;

for k := m - 1 downto 1 dobegin

if a1[k] < 10 then

write(a1[k])

else

write(chr(a1[k] + 65));

end;

end.

pascal遞迴問題

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 沒有結果...

C 的遞迴函式問題

假設s裡有個兩字元吧,當第一次呼叫reverse s 時,判斷 s是否為空,即s裡的第一個字元是否存在,如果有的話,就呼叫reverse s 1 即對s裡的第二個字元進行判斷。不為空,就再呼叫,對下一個進行判斷,因為s裡只有兩個字元,所以在第三次呼叫時,直接返回。返回到reverse s 1 中,之...

遞迴呼叫一題目C C中關於遞迴呼叫的問題

不用遞迴吧。這個問題很好解決啊。for int n 0 n 1000 n 答案是31 using system using using namespace consoleapplication1public static int find int s while f i return i 1 sta...