В выражении вместо "?" вставить знак одного из четырех арифметических действий, чтобы результат вычислений равнялся 35 - C#
Формулировка задачи:
рекурсия
В написанном выражении ((((1 ? 2) ? 3) ? 4) ? 5) ? 6
вместо каждого знака "?" вставить знак одного из четырех арифметических действий: +, -, *, / так, чтобы результат вычислений равнялся 35 (при делении дробная часть в частном отбрасывается).
помогите пожалуйста перевести эту задачу на си шарп.Заранее спасибо!
Var z: string[5];
Procedure OPER(r,k: integer);
Var i:byte;
Begin
If k = 6 then
If r = 35 then begin
Write('((((1 ',z[1],' ');
For i:=2 to 5 do Write(i,') ',z[i],' ');
WriteLn('6 = 35')
end
else
else begin
z[k]:='+'; OPER(r+k+1,k+1);
z[k]:='-'; OPER(r-k-1,k+1);
z[k]:='*'; OPER(r*(k+1),k+1);
z[k]:='/'; OPER(r div (k+1),k+1);
end
End;
Begin
OPER(1,1)
End.Решение задачи: «В выражении вместо "?" вставить знак одного из четырех арифметических действий, чтобы результат вычислений равнялся 35»
textual
Листинг программы
class Program
{
static void OPER(int r, int k,string []z)
{
if (k == 6)
{
if (r == 35)
{
Console.Write("((((1 " + z[1] + " ");
for (int i = 2; i < 6; ++i)
Console.Write(i + ")" + z[i] + " ");
Console.WriteLine("6 = 35");
}
}
else
{
z[k] = "+"; OPER(r + k + 1, k + 1,z);
z[k] = "-"; OPER(r - k - 1, k + 1,z);
z[k] = "*"; OPER(r * (k + 1), k + 1,z);
z[k] = "/"; OPER(r / (k + 1), k + 1,z);
}
}
static void Main(string[] args)
{
string[] z = new string[6];
OPER(1, 1,z);
Console.ReadKey(true);
}
}