为什么dfs(i,k--,n-i)会报SIGFPE
查看原帖
为什么dfs(i,k--,n-i)会报SIGFPE
495171
shihang2024楼主2024/5/29 13:19

本人在编写程序时遇到一个奇怪的现象,就是在递归中如果将dfs(i,k-1,n-i)改成dfs(i,k--,n-i),程序就无法输出答案。 调试时报SIGFPE(除零异常信号) 编译器版本:gcc-4.9.2

代码如下

#include<iostream>
#include<cstdio>
using std::cin;
int n,k,ans;
void dfs(int,int,int);
int main(){
	cin>>n>>k;
	dfs(1,k,n);
	printf("%d\n",ans);
	return 0;
}
void dfs(int x,int k,int n){
	//printf("x=%d k=%d n=%d ans=%d\n",x,k,n,ans);
	if(k==1){
		ans++;
		return;
	}
	for(int i=x;i<=n/k;i++)
      //dfs(i,k--,n-i) 报SIGFPE,洛谷报Floating-point exception.
		dfs(i,k-1,n-i); 
}
2024/5/29 13:19
加载中...