c語言用遞迴顛倒棧動態棧不知道怎麼遞迴

2021-03-19 18:28:37 字數 1442 閱讀 9412

1樓:匿名使用者

按照題意應該是一個

int i=1;用來給陣列需要賦值定位到具體儲存單元,此處從陣列第二開始賦值。下表0第一

int a;入棧單元用來臨時儲存資料

f(n)

else f(n-1);

}出棧是逆序儲存到儲存單元(此例為了方便,上面的是加了一個陣列。你可以直接使用一個陣列,使用對換的方法。)

僅供參考。

如何設計遞迴演算法

1.確定遞迴公式

2.確定邊界(終了)條件

練習:用遞迴的方法完成下列問題

1.求陣列中的最大數

2.1+2+3+...+n

3.求n個整數的積

4.求n個整數的平均值

5.求n個自然數的最大公約數與最小公倍數

6.有一對雌雄兔,每兩個月就繁殖雌雄各一對兔子.問n個月後共有多少對兔子

7.已知:數列1,1,2,4,7,13,24,44,...求數列的第 n項.

2.3典型例題

例3 快速排序

快速排序的思想是:先從資料序列中選一個元素,並將序列中所有比該元素小的元素都放到它的右邊或左邊,再對左右兩邊分別用同樣的方法處之直到每一個待處理的序列的長度為1,處理結束.

程式如下:12

3456

78910

1112

1314

1516

1718

1920

2122

2324

2526

2728

2930

programkspv;

vara:array[0..10000]oflongint;

i,n:integer;

procedurequicksort(l,r:longint);

vari,j,mid:longint;

begin

i:=l;j:=r;mid:=a[(l+r)div2];

repeat

whilea[i]middodec(j);

ifi<=jthen

begin

a[0]:=a[i];a[i]:=a[j];a[j]:=a[0];

inc(i);dec(j);

end;

untili>j;

ifi

ifl

end;

begin

write('inputdata:');

readln(n);

fori:=1tondoread(a[i]);

writeln;

quicksort(1,n);

write('outputdata:');

fori:=1tondowrite(a[i],'');

writeln;

end.

不知道怎麼去學習c語言,該從哪下手

要把c語言程式設計那本書看透 課後習題要弄懂 不知道lz的專業要求是什麼樣的 如果專業要求不是很強的話 就是基本的哪幾個結構要弄懂 還有變數和陣列 以及一些檔案的操作和位運算 明白這些省二級就應該可以搞定了 國家二級就要在哪些完全很透的情況下 還有會指標和函式 以及結構體了。如果你們專業要求都很嚴的...

c語言求數中的最大者不知道哪裡出問題

scanf d,d.d x,y,z 這裡面一個逗號,一個.是不是輸入錯誤了。如果你直接1,2,3 得到的就是2 但是你 1,2.3就是正確的3了 補充 1 你的max函式邏輯以及if else用法是對的,雖然有點繞。當然你最好新增大括號來讓 更清晰。2 main函式返回值int確實才是標準的。以下是...

C語言最最最初學者的問題!不知道的不要亂說,誤導

不管你是初中學歷還是大學學歷,學語言一開始都是很暈的。不管你能不能看懂書,你都要慢慢的看,也可以慢慢的背一些書上的小程式,然後再慢慢的去理解你背掉的那些程式。幾個月之後你就會發現你已經入門了。本人有著真實的感受。希望你能堅持下去!數學雖然很重要,但是最主要的還是你是不是會程式設計,對程式設計的瞭解有...