Предмет: Информатика, автор: NTS20

СРОЧНО ПОЖАЛУЙСТА

Алгоритм вычисления функции F(n) задан следующими соотношениями:


F(n) = 1, при n < -100000,

F(n) = F(n – 1) + 3*F(n – 3) + 2, при n > 10,

F(n) = -F(n – 1) для остальных случаев.


Чему равно значение функции F(20)?


MrSolution: Вы уверены, что n < -100000 - это правильно? Если реализовывать кодом, то произойдет переполнение программного стека.
##
function F(n: integer): integer;
begin
if(n<-100000) then F:= 1
else if (n>10) then F:= F(n-1)+3*F(n-3)+2
else F:= -F(n-1);
end;
print(F(20));
MrSolution: Можете попробовать, но на свой страх и риск:
import sys

sys.setrecursionlimit(25000)

def f(n):
if n < -100000:
return 1
elif n > 10:
return f(n - 1) + 3 * f(n - 3) + 2
else:
return -f(n - 1)

print(f(20))
Язык питон.
MrSolution: Ответ 136?
MrSolution: В комментарии к своему ответу привел решение задачи на паскале.

Ответы

Автор ответа: MrSolution
0

Ответ:

(см. объяснение)

Объяснение:

Решим задачу программным методом:

using System;

using System.Threading;

namespace Study

{

   class Program

   {

       static int F(int n)

       {

           if (n < -100000) return 1;

           else if (n > 10) return F(n - 1) + 3 * F(n - 3) + 2;

           else return -F(n - 1);

       }

       static void Main(string[] args)

       {

           Thread th = new Thread(() =>

           {

               Console.WriteLine(F(20));

           }, 100000000);

           th.Start();

           th.Join();

       }

   }

}

Результатом работы программы будет число 136.

Задание выполнено!


MrSolution: Решил задачу на паскале:
##
function F(n: integer): integer;
begin
if(n<-100000) then F:= 1
else if (n>10) then F:= F(n-1)+3*F(n-3)+2
else F:= -F(n-1);
end;
var th:= new System.Threading.Thread(()->writeln(F(20)),10000000);
th.Start;
th.Join;
Похожие вопросы
Предмет: Английский язык, автор: спорт6