пример рекурсии
beq
c_cpp
2 years ago
1.7 kB
9
Indexable
double func(double n) { // рекурсия static double a1; // первый a and b static double b1; // для подсчета а2,b2 static double a, b; static double sum; static int k = 1; // номер итерации if (k == 1) { k = a1 = b1 = 1; sum = 0; } a = 0.5 * (sqrt(b1) + (0.5 * (sqrt(a1)))); // все по задаче b = 2 * (a1 * a1) + b1; sum += a * b; a1 = a; // получаем a(k-1),b(k-1) b1 = b; k++; // прибавляем k return (k < n) ? func(n) : k = 1, sum; } double cycle(double n) { // цикл double a1 = 1; double b1 = 1; double a, b; double sum = 0; for (int k = 1; k < n; k++) { // Пока k < n, выполняем цикл a = 0.5 * (sqrt(b1) + (0.5 * (sqrt(a1)))); b = 2 * (a1 * a1) + b1; sum += a * b; a1 = a; b1 = b; } return sum; } int input() { // ввод double n; bool flag = false; // Лог. переменные char select = _getch(); system("cls"); // очитска консоли cout << "Введите натуральное число n (от 1 до 101):\n"; do { flag = false; cout << "\nn = "; cin >> n; if (!cin || n < 1 || n > 101 || n != (int)n) { // защита от дурака cin.clear(); while (cin.get() != '\n'); cout << "\nОшибка. Повторите ввод.\n"; flag = true; } } while (flag); cout << "\nВы ввели число:" << (int)n << endl; } return (int)n; }
Editor is loading...