簡體   English   中英

CodeBlocks C ++異常

[英]CodeBlocks C++ Exception

我遇到這個代碼的問題:

#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>

using namespace std;

long long addV(int i) {
    return pow(10,i);
}

int len;

void recurse(int n,long long &ways,int values[],int current=0,int p=0) {
    if(p>len) return;
    if(current>n) return;
    if(current ==n) {
        ways++;
        return;
    }
    int cv = n-current;
    cv/=values[p];

    for(int i=0;i<=cv;i++) {
    recurse(n,ways,values,current+values[p]*i,p+1);
    }
}


int main() {
    int n;
    cin>>n;
    long long ways=0;
    int values[] ={1,2,3};
    len = sizeof(values)/sizeof(int);
    recurse(n,ways,values);
    cout<<ways;
}

例外來自(cv / = values [p];)行。 當然,糟糕的CodeBlocks永遠不會顯示異常。 我確信它很容易解決。

if(p>len)return;

實際上,當p == len時,你已經訪問了邊界。 p >= len需要返回。

因為遞歸的結束條件是p > len ,這意味着p將在0到3(包括)的范圍內。 如您所知,三個條目的數組的索引范圍從0到2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM