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...