Хелпикс

Главная

Контакты

Случайная статья





Задание 3.1. Рекурсивные функции



Задание 3.1. Рекурсивные функции

10.Индивидуальное задание

Код программы:

 

Задание 3.2. Разработка рекурсивной триады

10.Индивидуальное задание

Найдите значение многочлена степени N по схеме Горнера. Задание степени многочлена, коэффициентов и аргумента предусмотрите в программе.

Код программы:

#include<iostream>

using namespace std;

double result(double x, double* a, int n) {

if (n > 1) {

   return a[n] + result(x, a, n - 1) * x;

}

return a[0] * x + a[1];

}

int main()

{

setlocale(LC_ALL, "rus");

int n = 0;

cout << "Введите степень многочлена" << endl;

cin >> n;

double* a = new double[n + 1];

for (int i = 0; i <= n; i++) {

   cout << "Введите коофициент a" << i << endl;

   cin >> a[i];

}

double x = 0.0;

cout << "Введите x, при котором нужно посчитать функцию" << endl;

cin >> x;

cout << "Заданная функция в точке " << x << " = " << result(x, a, n) << endl;

return 0;

}

Контрольный пример:

Задание 3.3. Рекурсивные методы в решении задач

10.Индивидуальное задание

В Фибоначчиевой системе счисления числа формируются по правилам:

· Используются только символы 0 и 1;

· Каждый разряд соответствует элементу последовательности Фибоначчи 1, 2, 3, 5, 8, …, то есть указывает на наличие или отсутствие такового;

· В соседних разрядах не могут стоять символы 1, так как это автоматически означает формирование следующего за ними разряда. Например, 1710 = 1310 + 310 + 110 = 100101ф.

Составьте программу перевода числа из десятичной системы в Фибоначчиевую. Считать входные данные введенными корректно.

Код программы:

#include <iostream>

#include <vector>

using namespace std;

 

vector<unsigned long> Fibo_array;

//------------------------------------------------------------

// Записывает в Fibo_array все числа Фибоначи, <= N

//------------------------------------------------------------

void record_Fibo_array(const unsigned long& N)

{

       unsigned long F_p = 1;

       unsigned long F_pp = 1;

       for (unsigned long F = 1; F <= N; )

       {

                   Fibo_array.push_back(F);

                   F = F_p + F_pp;

                   F_pp = F_p;

                   F_p = F;

       }

}

//------------------------------------------------------------

void Fibo_system(unsigned long& n, int index)

{

       if (index < 0)

                   return;

       unsigned long F = Fibo_array[index];

       if (F > n) cout << 0;

       else {

                   cout << 1;

                   n -= F;

       }

       Fibo_system(n, --index);

}

//------------------------------------------------------------

int main()

{

       unsigned long n = 10;

       record_Fibo_array(n);

       cout << n << " = ";

       Fibo_system(n, Fibo_array.size() - 1);

       //cin.get();

       return 0;

}

Контрольный пример:

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.