C4. Рекуррентные соотношения

Напишите в комментариях к этой записи консольные приложения для решения этих задач, укажите также код задачи. Пример решения.
Решены задачи: 3, 8-10. Не решены: 1-2, 4-7.

Задачи

C4.1. Последовательность Фибоначчи образуется так: первый и второй члены последовательности равны 1, каждый следующий равен сумме двух предыдущих (1, 1, 2, 3, 5, 8, 13, …). Дано натуральное число n (n > 3).
а) Найти k-й член последовательности Фибоначчи.
б) Получить первые n членов последовательности Фибоначчи.
в) Верно ли, что сумма первых n членов последовательности Фибоначчи есть четное число?

C4.2.  Рассмотрим последовательность, образованную дробями: 1/1,  2/1,  3/2, …, в которой числитель (знаменатель) следующего члена последовательности получается сложением числителей (знаменателей) двух предыдущих членов. Числители двух первых дробей равны 1 и 2, знаменатели — 1 и 1.
а) Найти k-й член этой последовательности.
б) Получить первые n членов этой последовательности.
в) Верно ли, что сумма первых n членов этой последовательности больше числа А?

C4.3. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через 3, 6, 9, …, 24 часа, если первоначально была одна амеба.

C4.4. Гражданин 1 марта открыл счет в банке, вложив 1000 руб. Через каждый месяц размер вклада увеличивается на 2% от имеющейся суммы. Определить:
а) прирост суммы вклада за первый, второй, …, десятый месяц;
б) сумму вклада через три, четыре, …, двенадцать месяцев.

C4.5. Начав тренировки, лыжник в первый день пробежал 10 км. Каждый следующий день он увеличивал пробег на 10% от пробега предыдущего дня. Определить:
а) пробег лыжника за второй, третий, …, десятый день тренировок;
б) какой суммарный путь он пробежал за первые 7 дней тренировок.

C4.6.  В некотором году (назовем его условно первым) на участке в 100 гектаров средняя урожайность ячменя составила 20 центнеров с гектара. После этого каждый год площадь участка увеличивалась на 5%, а средняя урожайность — на 2%. Определить:
а) урожайность за второй, третий, …, восьмой год;
б) площадь участка в четвертый, пятый, …, седьмой год;
в) какой урожай будет собран за первые шесть лет.

C4.7.  Определить суммарный объем в литрах двенадцати вложенных друг в друга шаров со стенками толщиной 5 мм. Внутренний диаметр внутреннего шара равен 10 см. Принять, что шары вкладываются друг в друга без зазоров.

C4.8. Найти сумму 22 + 23 + 24 + … + 210. Операцию возведения в степень не использовать.

C4.9. Дано вещественное число а и натуральное число n. Вычислить значения a1, a2, a3, …, an. Операцию возведения в степень не использовать.

C4.10. Найти сумму:  -12 + 22 — 32 + 42 — … + 102. Условный оператор не использовать.


NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.


Помощь проекту:

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
18 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

C4.8

int a = 2;
int b = 0;
   for(int i = 2; i < 11; i++){
      a = a * 2;
      b = a + b;
   }
 Console.WriteLine(b);

Последний раз редактировалось 5 дней назад Вли ем

C4

using System;
//C4. Рекуррентные соотношения
namespace C4
{
    class Program
    {
        static double Input(string Name, double Min = -1.7E308, double Max = 1.7E308, double Exception1 = -1.7E308)
        {
            double Num;
            Console.WriteLine($"Введите {Name}: ");
            while (!(double.TryParse(Console.ReadLine(), out Num) && Num > Min && Num < Max && Num != Exception1)) Console.WriteLine("Введено неверное значение, повторите ввод: ");
            return Num;
        }
        static void Main()
        {   //C4.1
            Console.WriteLine("C4.1. Последовательность Фибоначчи образуется так: первый и второй члены последовательности равны 1, каждый следующий равен сумме двух предыдущих (1, 1, 2, 3, 5, 8, 13, …). Дано натуральное число n (n > 3).\nа) Найти k-й член последовательности Фибоначчи.\nб) Получить первые n членов последовательности Фибоначчи.\nв) Верно ли, что сумма первых n членов последовательности Фибоначчи есть четное число ? ");
            int N1 = (int) Input("число n",4);
            int N1A = 0;
            int N1B = 1;
            int N1C = 1;
            int N1sum = 1;
            Console.Write($"б) Получить первые n членов последовательности Фибоначчи.\n1, ");
            for (int a = 1; a < N1; a++)
            {
                N1C = N1A + N1B;
                Console.Write($"{N1C}, ");
                N1A = N1B;
                N1B = N1C;
                N1sum += N1C;
            }
            Console.WriteLine($"\nа) Найти k-й член последовательности Фибоначчи.\n{N1C}");
            Console.WriteLine($"в) Верно ли, что сумма первых n членов последовательности Фибоначчи есть четное число ?");
            Console.WriteLine(N1sum % 2 == 0 ? $"{N1sum} четное" : $"{N1sum} нечетное") ;
            Console.ReadKey();
            Console.Clear();
            //C4.2
            Console.WriteLine("C4.2.  Рассмотрим последовательность, образованную дробями: 1/1,  2/1,  3/2, …, в которой числитель (знаменатель) следующего члена последовательности получается сложением числителей (знаменателей) двух предыдущих членов. Числители двух первых дробей равны 1 и 2, знаменатели — 1 и 1.\nа) Найти k-й член этой последовательности.\nб) Получить первые n членов этой последовательности.\nв) Верно ли, что сумма первых n членов этой последовательности больше числа А ? ");
            int N2 = (int)Input("число n",1);
            double N2X = Input("Число А");
            int N2A = 1;
            int N2B = 0;
            int N2C = 0;
            int N2D = 1;
            double N2sum = 0;
            for (int a = 0; a < N2; a++)
            {
                N2A += N2C;
                N2C = N2A - N2C;
                N2B += N2D;
                N2D = N2B - N2D;
                Console.Write($"{N2A}/{N2C}, ");
                N2sum += ((double)N2A / (double)N2C);
                if (a == N2 - 1) Console.WriteLine($"\n {N2} член последовательности равен {N2A}/{N2C} ({((double)N2A/(double)N2C):f3})");
            }
            Console.WriteLine(N2sum>N2X? $"Сумма всех членов последовательности {N2sum:f3} больше чем {N2X}": $"Сумма всех членов последовательности {N2sum:f3} меньше чем {N2X}");
            Console.ReadKey();
            Console.Clear();
            //C4.3
            Console.WriteLine("C4.3. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через 3, 6, 9, …, 24 часа, если первоначально была одна амеба.");
            int N3 = 1;
            for (int a = 1; a <= 8; a++)
            {
                N3 *= 2;
                Console.WriteLine($"{a * 3} час - {N3} амеб");
            }
            Console.ReadKey();
            Console.Clear();
            //C4.4
            Console.WriteLine("C4.4. Гражданин 1 марта открыл счет в банке, вложив 1000 руб. Через каждый месяц размер вклада увеличивается на 2% от имеющейся суммы. Определить:/nа) прирост суммы вклада за первый, второй, …, десятый месяц;\n б) сумму вклада через три, четыре, …, двенадцать месяцев.");
            double N4 = 1000;
            double N4profit;
            for (int a = 0; a < 12; a++)
            {
                N4profit = (N4 * 1.02) - N4;
                N4 += N4profit;
                Console.WriteLine( $"Месяц {a + 1} прирост {N4profit:f2}, общая сумма {N4:f2}");
            }
            Console.ReadKey();
            Console.Clear();
            //C4.5
            Console.WriteLine("C4.5. Начав тренировки, лыжник в первый день пробежал 10 км. Каждый следующий день он увеличивал пробег на 10% от пробега предыдущего дня. Определить:\nа) пробег лыжника за второй, третий, …, десятый день тренировок;\nб) какой суммарный путь он пробежал за первые 7 дней тренировок.");
            double N5 = 10;
            double N5sum = 10;
            for (int a = 1; a < 10; a++)
            {
                N5 *= 1.1;
                if (a < 7) N5sum +=N5;
                Console.WriteLine($"На день {a+1} тренеровок лыжник пробежал {N5:f2} км");
            }
            Console.WriteLine($"Суммарно за первые 7 дней лыжник пробежал {N5sum:f2} км");
            Console.ReadKey();
            Console.Clear();
            //C4.6
            Console.WriteLine("C4.6.  В некотором году (назовем его условно первым) на участке в 100 гектаров средняя урожайность ячменя составила 20 центнеров с гектара. После этого каждый год площадь участка увеличивалась на 5%, а средняя урожайность — на 2%. Определить:\nа) урожайность за второй, третий, …, восьмой год;\nб) площадь участка в четвертый, пятый, …, седьмой год;\nв) какой урожай будет собран за первые шесть лет.");
            double N6area = 100;
            double N6product = 20;
            double N6sum=2000;
            for (int a = 2; a<=8; a++)
            {
                N6area *= 1.05;
                N6product *= 1.02;
                if(a<=6)N6sum += (N6area * N6product);
                Console.Write($"\nНа {a} год площадь засева {N6area:f2} га");
                if (a <= 7) Console.Write($", урожайность {N6product:f2} ц/га");
            }
            Console.WriteLine($"\nСуммарный урожай за первых 6 лет {N6sum:f2} ц");
            Console.ReadKey();
            Console.Clear();
            //C4.7
            Console.WriteLine("C4.7.  Определить суммарный объем в литрах двенадцати вложенных друг в друга шаров со стенками толщиной 5 мм. Внутренний диаметр внутреннего шара равен 10 см. Принять, что шары вкладываются друг в друга без зазоров.");
            double N7Din = 10;
            double N7sum = (4/3)*Math.PI*Math.Pow(N7Din,3);
            for (int a = 1; a < 12; a++)
            {
                N7Din += +1;
                N7sum += (4 / 3) * Math.PI * Math.Pow(N7Din, 3);
            }
            Console.WriteLine($"{N7sum:f3}");
            Console.ReadKey();
            Console.Clear();
            //C4.8
            Console.WriteLine("C4.8. Найти сумму 22 + 23 + 24 + … + 210. Операцию возведения в степень не использовать.");
            double N8 = 2;
            double N8sum = 0;
            for (int a = 2; a<=10; a++)
            {
                N8 *= 2;
                N8sum += N8;
            }
            Console.WriteLine(N8sum);
            Console.ReadKey();
            Console.Clear();
            //C4.9
            Console.WriteLine("C4.9. Дано вещественное число а и натуральное число n. Вычислить значения a1, a2, a3, …, an. Операцию возведения в степень не использовать.");
            double N9A = Input("число А");
            double N9A2 = 1;
            int N9N = (int) Input("число N",1);
            for (int a = 1; a<=N9N; a++)
            {
                N9A2 *= N9A;
                Console.WriteLine($"{N9A}^{a} = {N9A2}");
            }
            Console.ReadKey();
            Console.Clear();
            //C4.10
            Console.WriteLine("C4.10. Найти сумму:  -12 + 22 — 32 + 42 — … + 102. Условный оператор не использовать.");
            int N10sum = 0;
            int N10 = 1;
            for (int a = 1; a<=10;a++)
            {
                N10 *= -1;
                N10sum += N10 * (a * a);
            }
            Console.WriteLine(N10sum);
            Console.ReadKey();
            Console.Clear();
        }
    }
}

C4.1. Последовательность Фибоначчи образуется так: первый и второй члены последовательности равны 1, каждый следующий равен сумме двух предыдущих (1, 1, 2, 3, 5, 8, 13, …). Дано натуральное число n (n > 3).
а) Найти k-й член последовательности Фибоначчи.
б) Получить первые n членов последовательности Фибоначчи.
в) Верно ли, что сумма первых n членов последовательности Фибоначчи есть четное число?

    static void Main()
    {
      Title = «Последовательность Фибоначчи.»;
      int a1 = 1, a2 = 1, a3;
      Write(«Ввод n —> «);
      int n = int.Parse(ReadLine() ?? string.Empty);
      WriteLine();

      WriteLine(«a1 = {0}\na2 = {1}», a1, a2);// Вывод известных членов последовательности.

      for (int i = 3; i <= n; i++)
      {
        a3 = a1 + a2;
        Thread.Sleep(100);
        WriteLine(«a{0} = {1}», i, a3);
        a1 = a2;
        a2 = a3;
      }
      ReadKey();
    }

C4.5. Начав тренировки, лыжник в первый день пробежал 10 км. Каждый следующий день он увеличивал пробег на 10% от пробега предыдущего дня. Определить:
а) пробег лыжника за второй, третий, …, десятый день тренировок;
б) какой суммарный путь он пробежал за первые 7 дней тренировок.

double runOneDay=10, total=0;
            for (int i = 0; i < 7; i++)
            {
                Console.WriteLine($"За день - {i+1} лыжник пробежал - {runOneDay} км");
                runOneDay *= 1.1;
                total += runOneDay;
            }
            Console.WriteLine("За 7 дней лыжник пробежал - " + total + " км");
Важно: Вы можете поддержать проект и автора.

C4.1. Последовательность Фибоначчи образуется так: первый и второй члены последовательности равны 1, каждый следующий равен сумме двух предыдущих (1, 1, 2, 3, 5, 8, 13, …). Дано натуральное число n (n > 3).
а) Найти k-й член последовательности Фибоначчи.
б) Получить первые n членов последовательности Фибоначчи.
в) Верно ли, что сумма первых n членов последовательности Фибоначчи есть четное число?

Простое решение:

Console.Write($"числа Фибоначчи. Введите n > 2 :");
int n = Convert.ToInt32(Console.ReadLine());
int[] a = new int[n];
a[0] = 1;
a[1] = 1;
int s = 2;
for (int i = 2; i < n; i++)
{
   a[i] = a[i - 1] + a[i - 2];
   Console.WriteLine($"a[{i+1}]={a[i]}");
   s += a[i];
}
Console.WriteLine($"сумма = {s}");
Важно: Вы можете поддержать проект и автора.

Задачи С4.1 — С4.7. Две первые с применением массивов (кажется мне, что это точнее соответствует постановке задачи — получить, т.е. вычислить и сохранить), остальные без (только вычисление и вывод на экран).

using System;
namespace Task2
{
    class Program
    {
        static double Vvod_Chisla(string info)
        {
            double chislo;
            string vvod;
            Console.Write("Введите " + info + ": ");
            vvod = Console.ReadLine();
            while (!Double.TryParse(vvod, out chislo))
            {
                Console.WriteLine("Недопустимые символы в строке ввода. Ожидается число:");
                vvod = Console.ReadLine();
            }
            return chislo;
        }
        static int Vvod_Chisla_Int(string info)
        {
            int chislo;
            string vvod;
            Console.Write("Введите " + info + ": ");
            vvod = Console.ReadLine();
            while (!Int32.TryParse(vvod, out chislo))
            {
                Console.WriteLine("Недопустимые символы в строке ввода.Ожидается целое число:");
                vvod = Console.ReadLine();
            }
            return chislo;
        }
        static void Main(string[] args)
        {
            int s, n;
            double x, y, a;
            // C4.1
            Console.WriteLine("Задача C4.1");
            n = Vvod_Chisla_Int("целое число (n >= 3)");
            int[] fibonachi = new int[n];
            fibonachi[0] = fibonachi[1] = 1;
            s = 2;
            for (int i = 2; i < n; i++)
            {
                fibonachi[i] = fibonachi[i - 1] + fibonachi[i - 2];
                s += fibonachi[i];
            }
            Console.WriteLine("{0}-й член последовательности Фибоначчи: {1}", n, fibonachi[n - 1]);
            Console.WriteLine("Первые {0} членов последовательности Фибоначчи:", n);
            for (int i = 0; i < n; i++)
                Console.Write(fibonachi[i] + " ");
            Console.WriteLine();
            if (s % 2 == 0)
                Console.WriteLine("Cумма первых {0} членов последовательности Фибоначчи" +
                    "= {1}, это четное число", n, s);
            else
                Console.WriteLine("Cумма первых {0} членов последовательности Фибоначчи" +
                    "= {1}, это нечетное число", n, s);
            Console.ReadKey();
            // C4.2
            Console.WriteLine("Задача C4.2");
            n = Vvod_Chisla_Int("целое число (n >= 3)");
            int[] num = new int[n];
            int[] denom = new int[n];
            num[0] = 1;
            num[1] = 2;
            denom[0] = denom[1] = 1;
            x = 3;
            for (int i = 2; i < n; i++)
            {
                num[i] = num[i - 1] + num[i - 2];
                denom[i] = denom[i - 1] + denom[i - 2];
                x += (double)num[i] / denom[i];
            }
            Console.WriteLine("{0}-й член последовательности: {1}/{2}", n, num[n - 1], denom[n - 1]);
            Console.WriteLine("Первые {0} членов последовательности:", n);
            for (int i = 0; i < n; i++)
                Console.Write("{0}/{1} ", num[i], denom[i]);
            Console.WriteLine();
            a = Vvod_Chisla("число А");
            if (x > a)
                Console.WriteLine("Cумма первых {0} членов последовательности " +
                    "= {1:F3}, она больше числа {2}", n, x, a);
            else
                Console.WriteLine("Cумма первых {0} членов последовательности " +
                    "= {1:F3}, она  не больше числа {2}", n, x, a);
            Console.ReadKey();
            // C4.3
            Console.WriteLine("Задача C4.3");
            n = 1;
            for (int i = 3; i < 25; i += 3)
            {
                n *= 2;
                Console.WriteLine("Через {0} часов будет {1} клеток.", i, n);
            }
            Console.ReadKey();
            // C4.4
            Console.WriteLine("Задача C4.4");
            // а)
            Console.WriteLine("а)");
            x = 1000;
            for (int i = 0; i < 10; i++)
            {
                y = x * 0.02;
                x += y;
                Console.WriteLine("Прирост суммы вклада за {0}-й месяц = {1:F2} руб.", i + 1, y);
            }
            // б)
            Console.WriteLine("б)");
            x = 1000;
            for (int i = 0; i < 12; i++)
            {
                x *= 1.02;
                if (i > 1)
                    Console.WriteLine("Сумма вклада после {0} месяцев = {1:F2} руб.", i + 1, x);
            }
            Console.ReadKey();
            //C4.5
            Console.WriteLine("Задача C4.5");
            // а)
            Console.WriteLine("а)");
            y = 10;
            for (int i = 0; i < 9; i++)
            {
                y *= 1.1;
                Console.WriteLine("Пробег лыжника за {0}-й день = {1:F3} км.", i + 2, y);
            }
            // б)
            Console.WriteLine("б)");
            x = y = 10;
            for (int i = 0; i < 6; i++)
            {
                y *= 1.1;
                x += y;
            }
            Console.WriteLine("Суммарный пробег за 7 первых дней = {0:F3} км.", x);
            Console.ReadKey();
            // C4.6
            Console.WriteLine("Задача C4.6");
            // а)
            Console.WriteLine("а)");
            x = 20;
            for (int i = 0; i < 7; i++)
            {
                x *= 1.02;
                Console.WriteLine("Урожайность за {0}-й год = {1:F3} ц/га.", i + 2, x);
            }
            // б)
            Console.WriteLine("б)");
            y = 100;
            for (int i = 0; i < 6; i++)
            {
                y *= 1.05;
                if (i > 1)
                    Console.WriteLine("Площадь участка на {0}-й год = {1:F3} га.", i + 2, y);
            }
            Console.ReadKey();
            // в)
            Console.WriteLine("в)");
            x = y = 100 * 20;
            for (int i = 0; i < 5; i++)
            {
                y *= 1.071;
                x += y;
            }
            Console.WriteLine("Суммарный урожай за 6 первых лет = {0:F3} ц.", x);
            Console.ReadKey();
            //C4.7
            Console.WriteLine("Задача C4.7");
            x = 0;
            for (y = 1; y < 2.2; y += 0.1)
                x += y * y * y * Math.PI / 6;
            Console.WriteLine("Суммарный объем 12 шаров = {0:F3} л.", x);
            Console.ReadKey();
        }
    }
}
Важно: Вы можете поддержать проект и автора.

C 4.9 Дано вещественное число а и натуральное число n. a1, a2, a3, …, an. Операцию возведения в степень не использовать.

Console.WriteLine("Введите число");
float a = float.Parse(Console.ReadLine());
Console.WriteLine("Введите макс степень");
int n = Int32.Parse(Console.ReadLine());
float r = 1;
Console.WriteLine("Результаты:");
for (int i = 1; i <= n; i++)
{
   r *= a;
   Console.WriteLine(r);
}
Console.ReadKey();
Важно: Вы можете поддержать проект и автора.

C4.10. Найти сумму:  -12 + 22 — 32 + 42 — … + 102. Условный оператор не использовать.

int number = -1, number2 = 2,sum2=0;
for (int i = 1; i <= 10; i++)
{
   while (i % 2 == 0)
   {
       sum2 += number2 * number2;
       number2 += 2;
       Console.WriteLine(sum2);
       break;
   }
   while (i % 2 == 1)
   {
       sum2 -= number * number;
       number -= +2;
       Console.WriteLine(sum2);
       break;
   }
}
Важно: Вы можете поддержать проект и автора.

C4.3. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через 3, 6, 9, …, 24 часа, если первоначально была одна амеба.

int ameba = 1;
int hours;
Console.Write("Сколько часов прошло: ");
hours = int.Parse(Console.ReadLine());
for (int i = 1; i <= hours; i++)
   if (i % 3 == 0)
      ameba *= 2;
Console.WriteLine($"Через {hours} ч. Будет {ameba} амёб(ы)");
Важно: Вы можете поддержать проект и автора.
Важно: Вы можете поддержать проект и автора.

Я чутка не понял эти задачи нужно решать с помощью рекурсии или циклов?

Важно: Вы можете поддержать проект и автора.
18
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x