#472: 為何會RE


luckysky (luckysky)

學校 : 國立中央大學
編號 : 2338
來源 : [140.115.217.26]
最後登入時間 :
2008-12-01 22:51:05
c061. 00530 - Binomial Showdown -- UVa530 | From: [61.229.77.112] | 發表日期 : 2008-08-18 18:30

#include <cstdlib>
#include <iostream>

using namespace std;

int kk(int n,int m){
    if(m==0){
        return 1;
    }
    else if(m==1){
        return n;
    }
    else if(m==n){
        return 1;
    }
    else if(m>n){
        return 0;
    }
    else{
        return kk(n-1,m-1)+kk(n-1,m);
    }
}
int main(int argc, char *argv[])
{
    int n,m;
    while(cin>>n>>m){
        if(n==0 && m==0){
            break;
        }
        cout<<kk(n,m)<<endl;
    }  
    system("PAUSE");
    return EXIT_SUCCESS;
}
執行時發生錯誤 (SIGSEGV)(11)!!
Segmentation fault, an address reference boundary error.(記憶體區段錯誤)
可能原因為:
* 通常為使用超過陣列範圍
* 指標指向不正確位址!
* 陣列初始化不正確!
* 嘗試在執行時期定義陣列長度!

 
#473: Re:為何會RE


POOHccc ()

學校 : 國立臺中技術學院
編號 : 1139
來源 : [220.135.97.253]
最後登入時間 :
2012-02-04 21:23:42
c061. 00530 - Binomial Showdown -- UVa530 | From: [218.167.60.157] | 發表日期 : 2008-08-18 18:52

#include <cstdlib>
#include <iostream>

using namespace std;

int kk(int n,int m){
    if(m==0){
        return 1;
    }
    else if(m==1){
        return n;
    }
    else if(m==n){
        return 1;
    }
    else if(m>n){
        return 0;
    }
    else{
        return kk(n-1,m-1)+kk(n-1,m);
    }
}
int main(int argc, char *argv[])
{
    int n,m;
    while(cin>>n>>m){
        if(n==0 && m==0){
            break;
        }
        cout<<kk(n,m)<<endl;
    }  
    system("PAUSE");
    return EXIT_SUCCESS;
}
執行時發生錯誤 (SIGSEGV)(11)!!
Segmentation fault, an address reference boundary error.(記憶體區段錯誤)
可能原因為:
* 通常為使用超過陣列範圍
* 指標指向不正確位址!
* 陣列初始化不正確!
* 嘗試在執行時期定義陣列長度!



遞迴造成heap memory不足 
ZeroJudge Forum