有兩個關於代碼的問題貼在下面:
1)當我在代碼塊運行此代碼,該代碼有時運行成功(返回0),但通常會導致它顯示所有結果後返回一個錯誤(返回-1073741819)。爲什麼會這樣?
2)除數組的最後一個元素值爲1(pTriangle [20] = 1)外,其他值都正確。但是,我最終得到了一些垃圾數,我做錯了什麼?
我已經意識到我可以用二項式係數得出相同的結果,但我仍然不知道爲什麼我會得到這個錯誤,如果我的錯誤可以找到,這將是最好的。
Update1:
pTriangle[i] = temp[i % 2 ? 0 : 1] + pTriangle[i];
似乎是問題所在。當我評論這段代碼時,程序沒有崩潰。我試圖找出爲什麼崩潰,並試圖找到一個解決方案圍繞它:)創建帕斯卡三角(不穩定的代碼)
#include <stdio.h>
#include <stdlib.h>
#define LEVEL 20
int main()
{
int *pTriangle = (int*)malloc(sizeof(int)*(LEVEL+1));
int i;
for (i = 0; i < LEVEL; i++)
pTriangle[i] = 0;
createPascalTriangle(pTriangle, LEVEL);
for(i = 0; i < LEVEL+1; i++)
printf("pTriangle[%d]: %d\n", i, pTriangle[i]);
free(pTriangle);
return 0;
}
int createPascalTriangle(int *pTriangle, int level){
if (level <= 0)
return 0;
pTriangle[0] = 1;
pTriangle[1] = 1;
int i;
for (i = 2; i <= level; i++)
increasePascalTriangleOneLevel(pTriangle);
return 1;
}
int increasePascalTriangleOneLevel(int *pTriangle){
int i = 1;
int temp[2] = {0};
temp[0] = pTriangle[0];
while (pTriangle[i] != 0){
temp[i % 2] = pTriangle[i];
pTriangle[i] = temp[i % 2 ? 0 : 1] + pTriangle[i];
i++;
}
pTriangle[i] = 1;
return 1;
}
哇。它縮進了! – 2013-07-04 20:16:31
啊哈。謝謝:) – kpark