我的减法有问题,输出应该是
1 5 13 16 17什么> 1 5 13 16 17
4 8 3 1 I> 4 8 3 1
4 5 2想> 5 2 1
1 3是> 2 1
2 right side > 1
但是你可以看到它的不同输出,你能告诉我哪里错了并且遗失了 我只需要一些提示或技巧。提前谢谢:)
这是我的代码:
#include <iostream>
#include <stdlib.h>
using namespace std;
int input[10];
int dif[10];
int fin;
int dami;
int space;
int i;
int j;
int b = 0;
int main()
{
cout << "Enter up to 10 numbers,max 10:\n";
cin >> dami;
if (dami > 10)
{
cout << "Input exceeds limit try again\n";
system("pause");
system("CLS");
main();
}
else
{
cout << "Input Test Case:\n";
for (i = 0; i <dami; i++)
{
cin >> input[i];
if (input[i] > 100000)
{
cout << "\nInput exceeds limit";
system("pause");
system("CLS");
main();
}
}
cout << "\n";
for (int z = 0; z < dami; z++)
{
cout << input[z] << " ";
}
/* for (space = 0; space < dami - i; ++space)
{
cout << " ";
}*/
cout << "\n";
for (i = 0; i < dami; i++)
{
for (j = i; j < dami -1;j++)
{
//subtraction part
dif[j] = input[j+1] - input[j];
fin = dif[j+1] - dif[j];
if (fin < 0)
{
fin = fin * -1;
}
cout << " " << fin;
}
cout << "\n";
}
}
cout << "\n";
system("pause");
}
答案 0 :(得分:0)
首先,阅读您的用户输入,如果它是理智的,请将其放入数组中。
然后将输入数组及其包含的元素数传递给递归函数,如下所示:
void diff1(int items[], int count)
{
if (count > 0)
{
for (int n=0; n<count; n++)
{
cout << items[n] << " ";
items[n]=abs(items[n]-items[n+1]);
}
cout << "\n";
diff1(items, --count);
}
}
&amp;这是函数的a minimal implementation。
(nb:我确定你可以找出你可能需要的任何花哨的缩进:p)