Предположим, я хочу решить уравнение x + 3 = 40, используя GNU bc. Один из способов сделать это — начать с проверки, является ли 0 решением, затем проверить 1 и так далее, пока я не получу правильный ответ. (Очевидно, что это не лучший способ заниматься алгеброй, но да ладно.) Итак, я ввожу в GNU bc следующий код:
int solver(int x);
define solver(x){
if(x + 3 == 40) return x;
x = x + 1;
solver(x)
}
solver(0)
Он дает 37 — правильный ответ, конечно, — но за 37 следует 37 нулей. Основываясь на некоторых экспериментах, кажется, что каждый ноль исходит из экземпляра оператора if, который является ложным, но как мне предотвратить появление нулей? Я использую GNU bc для решения более сложных функций и создания более сложных списков чисел, поэтому мне действительно нецелесообразно перебирать все нули. Любая помощь будет оценена по достоинству, так как я еще ничего не понял.