#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
#include <conio.h>
void readm(int &N, int* &X, FILE* dat) // & тут потому что ни N ни X внутри main не меняются,
{ // потому что их новое значения не возвращаются из функции readm
scanf("%d", &N);
X = new int [N];
for (int i = 0; i < N; i++)
{
fscanf(dat, "%d", &X[i]);
}
}
void writem(int N, int* X, FILE* res)
{
for (int i = 0; i < N; i++)
{
fprintf(res, "%d ", X[i]);
}
}
int recursion(int* X, int N, int i, FILE* res)
{
switch (N)
{
case 1:
return X[i];
break;
case 2:
return (X[i] * X[i + 1]);
break;
default:
int M = N / 2;
return (recursion(X, M, i, res) * recursion(X, N - M, i + M, res));
}
}
int main(int argn, char* argc[])
{
FILE* dat, * res;
dat = fopen(argc[1], "r");
res = fopen(argc[2], "w");
int N = 0;
int i = 1;
int *X = nullptr;
readm(N, X, dat);
//writem(N, X, res);
//recursion(X, N, i, res);
fprintf(res, "%d", recursion(X, N, i, res));
return 0;
}
int recursion(int* X, int N, int i, FILE* res)
{
switch (N)
{
case 1:
return X[i];
break;
case 2:
return (X[i] * X[i + 1]);
break;
default:
int M = N / 2;
return (recursion(X, M, i, res) * recursion(X, N - M, i + M, res));
}
}
а так код хороший