我遇到了段异常, 但不确定是不是调用栈太深的原因.
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;
int n,m,count_,a,b; // a,b是马的坐标(x,y)
void func(int x, int y) {
if(x==n&&y==m) {
count_++;
return;
}
// 往下走
if(abs(x+1-a)+abs(y-b)!=3 || x+1==a || y==b) {
func(x+1,y);
}
// 往右走
if(abs(x-a)+abs(y+1-b)!=3 || x==a || y+1==b) {
func(x,y+1);
}
}
int main() {
scanf("%d %d %d %d", &m, &n, &a, &b);
func(0,0);
printf("%d\n",count_);
}
结果就是Segmentation fault