这是我的AC代码
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n,k,a[25],total,num;
bool book[25];
bool isPrime(int x){
if(x <= 1){
return 0;
}
for(int i = 2;i <= sqrt(x);i++){
if(x%i == 0){
return 0;
}
}
return 1;
}
void dfs(int step){
if(step == 0){
if(isPrime(num)){
total++;
}
return ;
}
for(int i = 1;i <= n;i++){
if(!book[i]){
book[i] = 1;
num += a[i];
dfs(step-1);
book[i] = 0;
num -= a[i];
}else{
return ;
}
}
}
int main(){
cin>>n>>k;
for(int i = 1;i <= n;i++){
cin>>a[i];
}
dfs(k);
cout<<total;
return 0;
}
但是如果不加那个else{return ; }的话就会出错,但是,因为这里是函数结尾,做完了会自动return,为什么要加个else{return ; }呢?