用遞迴演算法解決下面的問題(C C )

2023-03-09 22:05:03 字數 3815 閱讀 7983

1樓:匿名使用者

拷乙個我編的自己用的給你。

int * fullorder(int n)int i,j,k,n;

for(i=n=1;i<=n;i++)

int * re=malloc(sizeof(int)*n*n);

if(n==1)

elsere[(i*n/n+j)*n+k]=n-i;

free(re1);

return re;

結果在返回的指標裡。在記憶體中n個n個挨著放的。

比如下面**可將其輸出。

int *p=fullorder(n);

int nn=n的階乘自己算。

for(i=0;iprintf(""

2樓:

/*使用遞迴的方法進行求解乙個陣列的全排列*/#include

void permute(int);

#define n 7

int a[n];

int n=0;

void main()

permute(n);

printf("total is:%d",n);

void permute(int k)

printf(".t");

n++;if (n%4==0)

else

c語言遞迴問題! 10

3樓:弦斷淚已絕

遞迴演算法:是一種直接或者間接地呼叫自身的演算法。在計算機編寫程式中,遞迴演算法對解決一大類問題是十分有效的,它往往使演算法的描述簡潔而且易於理解。

遞迴演算法的特點。

遞迴過程一般通過函式或子過程來實現。

遞迴演算法:在函式或子過程的內部,直接或者間接地呼叫自己的演算法。

遞迴演算法的實質:是把問題轉化為規模縮小了的同類問題的子問題。然後遞迴呼叫函式(或過程)來表示問題的解。

遞迴演算法解決問題的特點:

(1) 遞迴就是在過程或函式裡呼叫自身。

(2) 在使用遞迴策略時,必須有乙個明確的遞迴結束條件,稱為遞迴出口。

(3) 遞迴演算法解題通常顯得很簡潔,但遞迴演算法解題的執行效率較低。所以一般不提倡用遞迴演算法設計程式。

(4) 在遞迴呼叫的過程當中系統為每一層的返回點、區域性量等開闢了棧來儲存。遞迴次數過多容易造成棧溢位等。所以一般不提倡用遞迴演算法設計程式。

遞迴演算法所體現的「重複」一般有三個要求:

一是每次呼叫在規模上都有所縮小(通常是減半);

二是相鄰兩次重複之間有緊密的聯絡,前一次要為後一次做準備(通常前一次的輸出就作為後一次的輸入);

三是在問題的規模極小時必須用直接給出解答而不再進行遞迴呼叫,因而每次遞迴呼叫都是有條件的(以規模未達到直接解答的大小為條件),無條件遞迴呼叫將會成為死迴圈而不能正常結束。 例子如下:

描述:把乙個整數按n(2<=n<=20)進製表示出來,並儲存在給定字串中。比如121用二進位制表示得到結果為:「1111001」。

引數說明:s: 儲存轉換後得到的結果。

n: 待轉換的整數。

b: n進製(2<=n<=20)

voidnumbconv(char *s, int n, int b)

/* figure out first n-1 digits */

numbconv(s, n/b, b);

/* add last digit */

len = strlen(s);

s[len] =0123456789abcdefghijklmnopqrstuvwxyz"[n%b];

s[len+1] =0';

}voidmain(void)

exit(0);}

好心的高手幫解一道c++遞迴題目

4樓:匿名使用者

(4+4)+(4+4+5)+(4+4+5+9)=43分別定義陣列a[0]=4;a[1]=4;a[2]=5;a[3]=9,n=4

sum=(a[0]+a[1])*n-1)+a[2]*(n-2)+a[3]*(n-3);

從這個表示式可以看出,從第一項到最後一項的係數遞減所以大數放到前面的值是最大的。

5樓:匿名使用者

我感覺按重量從高到低依次合併就是最大得分。

c語言遞迴演算法,求詳細解釋!

6樓:去吻你倔強的嘴

這道題是這樣的,a選項時,(16,2,2)第一次是2*(8,2,2)接下來,2*2*(4,2,2)再接下來2*2*2*(2,2,2)=16

b選項時:5*(16,10,5)接下來5*5*(1,10,5)在接下來的就是5*5*1=25因此這道題選b

c++遞迴小問題求解思路

7樓:寒寒家

我找到問題所在了。

先說個小問題,前兩個return 都應該是""字串在前面。

你的**邏輯是沒有問題的,只不過是double的精度問題的原因了:

qqd 之後amount的值是 但這個值在記憶體中儲存的是:

而在記憶體中是:0.

1 本來這兩個值應該是相等的,但因為記憶體中儲存的不同,所以導致 else if (amount - 0) 這個判斷沒有成立。

修改如下,測試通過,如果有疑問,歡迎交流。

#include

#include

#include

using namespace std;

string makechange(double amount) else if (amount - 0) else if(amount - 0) else if (amount - 0.

01 >=0) else

}int main(){

cout<

8樓:匿名使用者

string makechange(double amount)

if (amount - 0 ) else if (amount - 0) else if(amount - 0.

05 >=0) else if (amount - 0)

}遞迴到最後一步的時候出問題了,當amount ==的時候沒有處理所以少了。

c語言 遞迴問題求詳細解答 第一問輸入7的我會 第二問不懂 求解

9樓:匿名使用者

輸入16:

求r(16)的值;

根據第乙個if判斷可以知道:n=1,2,3,4,5時,對應的r(n)=n;

根據for迴圈機裡面的if判斷可以知道:當n=6時,r(n-i)不會小於0,所以r(6)=-1;

所以當n=7時,r(n-1)=r(6)<0,所以r(n)=1;

n=8,r(n-2)=r(6)<0,所以r(n)=2;

...n=10,r(n-4)=r(6)<0,所以r(n)=4;

n=11,r(n-5)=r(6)<0,所以r(n)=5;

當n=12,r(n-i)不會小於0,所以r(12)=-1;

n=13,r(n-1)=r(12)<0,所以r(n)=1;

...n=16,r(n-4)=r(12)<0,所以r(n)=4;

即當n=16時,r(n)=4;

關於c語言的乙個遞迴問題,求大神解答

10樓:蕭竣閏

當n=1時只有一種走法。即1

n=2時有兩種走法,可一次兩節,或兩次一節。

n=3時有三種。

n=4時有五種。

規律就出來了,即f[n]=f[n-1]+f[n-2] 。

當n=1 f[1]=1, 當n =2 f[2]=2

用下面的字組詞再寫句子。花,四用下面的字組詞,再寫一句話。

花鮮花清晨的鮮花帶著露珠,看上去美極了!四 用下面的字組詞,再寫一句話。龍顏 龍缽 膽大 龍蝨 膽慄 龍修 背穴 背篷 背膂 龍牓 龍牋 背述 背鐍 背靠 花組詞再造句 花朵公園裡有好多花朵。紅花俗話說紅花配落葉。給下面的字組詞,再填寫到恰當的句子中?1 他工作非常認真,常常 廢寢忘食 工作到深夜 ...

根據下面的漫畫,回答問題用生,根據下面的漫畫,回答問題。用生動具體的語言,描述這幅漫畫的主要內容

漫畫的題目是 滯後 畫面上的牛肉膏 瘦肉精 回爐麵包 染色饅頭內洋洋得意 理直氣壯地 容往前迅跑,而監管卻在後面追喊,累得氣喘吁吁。意對即可 食品安全頻頻出現問題 或問題嚴重 繁多 猖狂等 監管部門監管不力,嚴重滯後,有不可推卸的責任。意對即可 根據下邊的漫畫,回答問題。1 用生動具體的語言,描述這...

汽車剎車是踏板下面的幫浦漏氣怎麼解決?

汽車剎車總幫浦漏氣的解決方法是 拆開剎車總幫浦清洗一下,檢查閉氣閥有無破損,然後加點黃油裝好即可。剎車總幫浦又稱制動總幫浦 制動主缸,是整車制動系統的主要配合部分。這是真空助力器發出的聲響。真空制動增壓器的工作原理是利用發動機工作時產生的負壓與大氣壓之間的壓力差來迫使增壓器內橡膠膜片移動,推動制動主...