我也不知道该说什么,我也不清楚为什么我这个计算的fun方法我得调用三次
本来想法是第一个fun计算得出sum总数,然后根据总数来决定是否在调用第二次fun来输出结果,但是不知道为何使用flag来判断是否输出就会出现这么奇怪的结果
结果就是在第二个fun里面一切正常,迫不得已只能是使用了三次的fun ,真的好奇怪的有无大佬来解释解释为什么第一个fun会发生逻辑上的错误
#include <iostream>
using namespace std;
int s[11];
int sum = 0;
int tempsum = 0;
int n;
void fun(int t, int start, int temp,int flag) {
if (t > 10) {
if (temp == n) {
sum++;
if (flag == 1) {
tempsum++;
}
if (flag == 2) {
for (size_t i = 1; i <= 10; i++)
{
cout << s[i] << " ";
}cout << endl;
}
}
else {
return;
}
}
for (size_t i = 1; i <= 3; i++)
{
if (temp <= n) {
s[t] = i;
fun(t + 1, i, temp + i,flag);
//s[t] = -1;
}
else {
return;
}
}
}
int main()
{
cin >> n;
fun(1, 1, 0, 0);//这里不知道怎么就是需要这么一个,没了反而不行
if (sum != 0) {
fun(1, 1, 0, 1);//计算总数
cout << tempsum << endl;
fun(1, 1, 0, 2);//输出
}
else {
cout << sum;
}
return 0;
}