Я хочу получить все выражения, которые можно объединить четырьмя числами и четырьмя операциями. Диапазон чисел - [1, 13] Оператор может быть одним из '+ - * /'
Название давало мне смутное представление вроде этого :
void gen_expression_tree(BiTree &t, int num)
{
for(int i = 1; i < num; i++) {
t->data = one of “+-*/”
gen_expression_tree(t->lchild, i);
gen_expression_tree(t->rchild, num - i);
}
}
при num = = 1 это будет число, в противном случае операция. Ожидаемый результат:
(1+(2+(3+4)))
(1+(2+(4+3)))
(1+(2+(3-4)))
(1+(2+(4-3)))
(1+(2+(3*4)))
(1+(2+(4*3)))
(1+(2+(3/4)))
(1+(2+(4/3)))
(1+(3+(2+4)))
(1+(3+(4+2)))
(1+(3+(2-4)))
(1+(3+(4-2)))
(1+(3+(2*4)))
(1+(3+(4*2)))
(1+(3+(2/4)))
(1+(3+(4/2)))
(1+(4+(2+3)))
(1+(4+(3+2)))
Я не совсем понимаю, как циклы и рекурсия могут генерировать выражения, я хочу узнать несколько более подробных идей。