請問這個遞迴程式為什麼執行出錯,c語言,遞迴法的選擇排序。為什麼執行出錯。。。求賜教

2022-06-09 05:20:02 字數 3498 閱讀 1105

1樓:

1全部是很奇怪哦,看上去沒什麼問題啊。。

本身函式的內部變數和引數都很少,棧空間應該問題不大。

如果只是單純的改n的大小會引起出錯,那難道是全域性變數的靜態空間問題。。改成double讓n的可接受值更小可能就是因為乙個double比乙個int佔用記憶體更多,要不然你改成byte看看是不是可接受的n變大了。

你是在什麼系統上面寫的程式啊,用的什麼編譯器?你檢查下編譯引數看看有沒有什麼特別的呢,比如牽涉到記憶體的部分。

對了,還可以試試不用全域性變數,而是把int a[n][n];放到main函式裡面去,遞迴沒有棧溢位的話也許你的棧空間夠大,用區域性變數試試。

2樓:匿名使用者

額,這個程式我看著有點問題。

首先你的陣列沒有初始化,好吧,我們預設為陣列a預設初始化為零。當然這無傷大雅~

一般情況下,這種陣列是開的下的,100*100的陣列在全域性變數中應該不算大。主要的問題在於你的遞迴層數過多,是不是會造成棧溢位呢?

3樓:bai渡不知道

只是超過了int 的容量而已。

int a[n][n]; 改用 double a[n][n]; 試試.

4樓:匿名使用者

filewriter fw=new filewriter("e:\\bak\\2.txt");

這句改成

filewriter fw=new filewriter("e:\\bak\\2.txt", true);

c語言,遞迴法的選擇排序。為什麼執行出錯。。。求賜教

5樓:匿名使用者

沒太看懂樓主原來的意思,在原來**的基礎上修改

#include

void exchange(int array,int pos,int time);//交換陣列值

int findmin(int ,int left,int right);//尋找最大值所在的單元下標

void recurselectsort(int ,int n);//選擇排序法遞迴

int size;//size為數字個數

main()

printf("the result is:");

recurselectsort(array,size);//選擇排序

for(i=0;i

system("pause");

return 0;

}void recurselectsort(int array,int n)//n為已排好的數字個數

else if(n==1)

}void exchange(int array,int pos,int time)//交換陣列元素。pos為交換的位置,time為第幾次交換(也是交換到time-1這個單元)

int findmin(int array,int left,int right)//尋找最小值。left,right分別為查詢下界和上界

}return c;}

c語言遞迴順序輸出整數各位,為什麼我這樣寫,輸入4位及以上的數字,最後一位輸出的老是出錯呢???求大神解答

6樓:

void pos_seq(int n)

printf("%d ", n %10);

}int main()

7樓:匿名使用者

我執行你的程式結果是正確的

js settimeout()在類函式遞迴呼叫出錯怎麼回事?

8樓:匿名使用者

解決方法捕獲按鍵的事件。

9樓:匿名使用者

我認為主要bai

問題是settimeout對'this.test()'中this的解析出du了問題,舉例我剛寫zhi的比如dao

function wzen(z)

var wz=document.getelementbyid('sponsorads46554');

if (wz != null)

settimeout("wzen("+z+")",500);

}其中z引數就要分離出來,不回然settimeout會把它答當作字串處理。

下面的遞迴程式**出錯了?( (2n-1))*x-p(n-1)(x-(n-1)p(n-2))(x) )/n (n>=1) x (n=1) 1 (n=0)

10樓:吳鐵騎

你這也不叫遞迴啊,還有你的y也沒有賦值啊

11樓:匿名使用者

同意樓上的 …… 這y木有賦值

c++ 函式遞迴 問題,請問**出錯了?

12樓:匿名使用者

f()函式中的條件判斷n=0和n=1改為n==0和n==1;另外主函式中的scanf_s()中最好不要新增非輸入字元,比如你的\n。

13樓:野人馬

#include

int main()

int f(int n)

14樓:匿名使用者

邏輯沒問題,這裡改下最好:

else c = f(n - 1)*n; -- 》 else

c語言遞迴求階乘程式出錯

15樓:寶淑蘭竭碧

1全部n的階乘,就是從1開始乘到n,即1*2*3*...*(n-1)*n。

即n!=1*2*3*...*(n-1)*n。

而(n-1)!=1*2*3*...*(n-1)。

所以可以得出,n!=(n-1)!*n。

由這個概念,可以得出遞迴求階乘函式fact的演算法:

1如果傳入引數為0或1,返回1;

2對於任意的n,返回n*fact(n-1)。

**如下:

int fact(int n)

16樓:匿名使用者

double f(double n)

double型別的函式,return 1,;返回值是整型,不太合適吧

17樓:

不明白為什麼輸出用運算子%幹什麼,%是針對兩個整數而言的,所以可以將第15行改為

printf("%.0lf",f(n));即可。

18樓:潮範君

printf("%.0lf",(int)(f(n)%(n+1.0)));

加上強制型別轉換.

c語言中怎麼修改遞迴函式超過一百就會出錯的問題

19樓:百小度

利用尾遞迴;

動態規劃....

20樓:魔龍嗜血

你的程式**呢?有可能**編寫的問題。

你把**傳上來,我看看

c程式 關於命令列引數,請問這個程式如何執行

在程式所在資料夾按住ctrl右擊,點在此開啟命令提示符 也可以點開始 執行 輸入 cmd 回車 輸入 cd d dir dir 為你的程式所在資料夾路徑。開啟命令提示符後,輸入程式名 空格 引數1 空格 引數2 即可帶引數執行。另 一些整合開發環境可以直接設定預設命令引數,如 vc 是在工程 設定 ...

高數請問這個式子為什麼相等啊,高數請問這個式子為什麼相等啊

這個等式肯定是錯的。左邊n 0時等於1,這樣常數項為1,跟右邊一樣。但是左邊n 1時是 x x 1 但右邊n 1時是x 2,根本沒有x這一項,兩邊不可能相等。高數,這兩個式子為什麼相等 y lnx 是連續函式,在 x 0 的任意點 x0 處,都有 lim x x0 lnx lnx0 因此有 lim ...

請問這個圖什麼意思?為什麼說是悲傷的故事

兩人經歷困難才在一起,最後還是要分開,因為他們腳下的方塊像俄羅斯方塊,看似圓滿了,可下一秒就全消失了 像俄羅斯方塊一樣,經歷磨難,兩人終於要在一起了,可下一秒就全消失了 因為俄羅斯方塊那排滿了消掉那排注定是不能在一起.俄羅斯方塊填滿就自動消失,兩人都會掉下去 因為俄羅斯方塊遊戲規則是一行鋪滿就消失 ...