Хелпикс

Главная

Контакты

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





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



 

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего образования Тульский государственный педагогический университет им. Л.Н. Толстого

(ФГБОУ ВО «ТГПУ им. Л.Н. Толстого»)

 

 

 

Отчет по учебной практике

 

 

 

Выполнил: студент 1 курса группы 121591

Направления подготовки «Фундаментальная информатика и информационные технологии»

                                            Сидоров Максим Денисович

 

Проверил:

К.ф.-м.н., доцент
Шмелев А.Н.

 

 

Тула

 

Задание 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 При использовании или копировании материалов прямая ссылка на сайт обязательна.