[英]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.