ЕГЭ-16. Рекурсивные процедуры и функции

260 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

(Д.Ф. Муфаззалов, г. Уфа) Определите наименьшее значение суммы n+m такое, что значение F(n, m) больше числа 15 и выполняется условие n и m ‐ натуральные числа. Запишите в ответе сначала значения n и m, при которых указанная сумма достигается, в порядке неубывания, а затем ‐ соответствующее значение F(n, m). Числа в ответе разделяйте пробелом.

Python Паскаль C++
def F(n,m):
 if n<m:
  n,m = m,n
 if n != m:
   return F(n-m,m)
 else:
   return n
function F(n,m: integer): integer;
begin
 if n > m then
  F:= F(n-m,m)
 else
  if n < m then
    F:= F(n,m-n)
  else
    F:= n;
end;
int F(int n, int m)
{
 if( n > m )
   return F(n-m,m);
 else
   if( n < m )
     return F(m-n,n);      
   else
     return n;
}

 

(Д.Ф. Муфаззалов) Определите наименьшее число n такое, что при вызове F(n) второе выведенное число будет больше числа 51. Запишите в ответе сначала найденное значение n, а затем через пробел ‐ соответствующее значение F(n).

Python Паскаль C++
def F(n):
  print( n )
  if n > 0:
    d = (n%10 + F(n//10))
    print(d)
    return d
  else:
    return 0

 
function f(n: integer): integer;
var d:integer;
begin
 writeln(N);
 if n > 0 then begin
   d := n mod 10 + F(n div 10);
   writeln( d );
   F := d
 end
 else F:= 0;
end;
int F(int n)
{
cout << n << endl;
if( n ) {
  int d = n%10 + F(n/10);
  cout << d << endl;
  return d;
  }
else
  return 0;
}

(Д.Ф. Муфаззалов) Определите наименьшее значение n такое, что последнее выведенное число при вызове F(n) будет больше числа 32. Запишите в ответе сначала найденное значение n, а затем через пробел ‐ соответствующее значение F(n).

Python Паскаль C++
def F(n):
  print(n)
  if n>0:
    d=n%10+F(n//10)
    print(d)
    return d
  else: return 0

 
function F(n: integer): integer;
var d:integer;
begin
 writeln(N);
 if n > 0 then begin
   d := n mod 10+ F(n div 10);
   writeln(d);
   F := d
 end
 else F:= 0;
end;
int F(int n)
{
cout << n << endl;
if (n){
  int d = n % 10 + F(n/10);   
  cout << d << endl;
  return d;
  }
else return 0;
}

(Д.Ф. Муфаззалов) Определите наибольшее трехзначное значение n, при котором значение F(n), будет больше числа 7. Запишите в ответе сначала найденное значение n, а затем через пробел ‐ соответствующее значение F(n).

Python Паскаль C++
def F(n):
  if n<10:
    return n
  else:
    m=F(n//10)
    d=m%10;
    if m<d: return d
    else: return m
function F(n: integer): integer;
var m,d: byte;
begin
 if n < 10 then F:=n
 else begin
   m:= F(n div 10);
   d:= m mod 10;
   if m < d then F:=d
   else F := m
 end
end;

 
int F(int n)
{
if(n < 10)
   return n;
else {
 int m = F(n/10),    
     d = m%10;
 if( m < d )
   return d;
 else
  return m;
  }
}

(Д.Ф. Муфаззалов) Определите наименьшее значение n, при котором значение F(n), будет больше числа 320. Запишите в ответе сначала найденное значение n, а затем через пробел ‐ соответствующее значение F(n).

Python Паскаль C++
def F(n):
  if n>0:
    return n%10*F(n//10)
  else: return 1
 
function F
(n: integer): integer;
begin
 if n > 0 then
  F:= n mod 10 * F(n div 10)
 else
    F:= 1;
end;

 
int F(int n)
{
if(n)
    return n%10*F(n/10);
else return 1;
}

 

Определите наименьшее значение n, при котором сумма чисел, которые будут выведены при вызове F(n), будет больше 3200000. Запишите в ответе сначала найденное значение n, а затем через пробел ‐ соответствующую сумму выведенных чисел.

Python Паскаль C++
def F( n ):
  print(n*n)
  if n > 1:
    print(2*n+1)
    F(n-2)
    F(n//3)

 
procedure F
    ( n: integer );
begin
  writeln(n*n);
  if n > 1 then begin
    writeln(2*n+1);
    F(n-2);
    F(n div 3);
  end;
end;
void F( int n )
{
  cout << n*n << endl;
  if( n > 1 ) {
    cout << 2*n+1 << endl;
    F(n-2);
    F(n/3);
    }
}

Определите наименьшее значение n, при котором сумма чисел, которые будут выведены при вызове F(n), будет больше 3200000. Запишите в ответе сначала найденное значение n, а затем через пробел ‐ соответствующую сумму выведенных чисел.

Python Паскаль C++
def F( n ):
  print(n-5)
  if n > 1:
    print(n+8)
    F(n-2)
    F(n-3)

 
procedure F
    ( n: integer );
begin
  writeln(n-5);
  if n > 1 then begin
    writeln(n+8);
    F(n-2);
    F(n-3);
  end;
end;
void F( int n )
{
  cout << n-5 << endl;
  if( n > 1 ) {
    cout << n+8 << endl;
    F(n-2);
    F(n-3);
    }
}

Определите наименьшее значение n, при котором сумма чисел, которые будут выведены при вызове F(n), будет больше 1000000. Запишите в ответе сначала найденное значение n, а затем через пробел ‐ соответствующую сумму выведенных чисел.

Python Паскаль C++
def F( n ):
  print(n+1)
  if n > 1:
    print(2*n)
    F(n-1)
    F(n-3)

 
procedure F
    ( n: integer );
begin
  writeln(n+1);
  if n > 1 then begin
    writeln(2*n);
    F(n-1);
    F(n-3);
  end;
end;
void F( int n )
{
  cout << n+1 << endl;
  if( n > 1 ) {
    cout << 2*n << endl;
    F(n-1);
    F(n-3);
    }
}

Определите наименьшее значение n, при котором сумма чисел, которые будут выведены при вызове F(n), будет больше 1000000. Запишите в ответе сначала найденное значение n, а затем через пробел ‐ соответствующую сумму выведенных чисел.

Python Паскаль C++
def F( n ):
  print(n+1)
  if n > 1:
    print(n+5)
    F(n-1)
    F(n-2)

 
procedure F
    ( n: integer );
begin
  writeln(n+1);
  if n > 1 then begin
    writeln(n+5);
    F(n-1);
    F(n-2);
  end;
end;
void F( int n )
{
  cout << n+1 << endl;
  if( n > 1 ) {
    cout << n+5 << endl;
    F(n-1);
    F(n-2);
    }
}

Определите, сколько символов * выведет эта процедура при вызове F(140):

Python Паскаль C++
def F( n ):
  print('*')
  if n >= 1:
    print('*')
    F(n-1)
    F(n//2)

 
procedure F( n: integer );
begin
  write('*');
  if n >= 1 then begin
    write('*');
    F(n-1);
    F(n div 2);
  end;
end;
void F( int n )
{
  cout << '*';
  if( n >= 1 ) {
    cout << '*';
    F(n-1);
    F(n/2);
    }
}

Определите, сколько символов * выведет эта процедура при вызове F(280):

Python Паскаль C++
def F( n ):
  print('*')
  if n >= 1:
    print('*')
    F(n-1)
    F(n//3)
    print('*')

 
procedure F( n: integer );
begin
  write('*');
  if n >= 1 then begin
    write('*');
    F(n-1);
    F(n div 3);
    write('*');
  end;
end;
void F( int n )
{
  cout << '*';
  if( n >= 1 ) {
    cout << '*';
    F(n-1);
    F(n/3);
    cout << '*';
    }
}

Определите, сколько символов * выведет эта процедура при вызове F(40):

Python Паскаль C++
def F( n ):
  print('*')
  if n >= 1:
    print('*')
    F(n-1)
    F(n-3)
    print('*')

 
procedure F( n: integer );
begin
  write('*');
  if n >= 1 then begin
    write('*');
    F(n-1);
    F(n-3);
    write('*');
  end;
end;
void F( int n )
{
  cout << '*';
  if( n >= 1 ) {
    cout << '*';
    F(n-1);
    F(n-3);
    cout << '*';
    }
}

Определите, сколько символов * выведет эта процедура при вызове F(35):

Python Паскаль C++
def F( n ):
  print('*')
  if n >= 1:
    print('*')
    F(n-1)
    F(n-2)
    print('*')

 
procedure F( n: integer );
begin
  write('*');
  if n >= 1 then begin
    write('*');
    F(n-1);
    F(n-2);
    write('*');
  end;
end;
void F( int n )
{
  cout << '*';
  if( n >= 1 ) {
    cout << '*';
    F(n-1);
    F(n-2);
    cout << '*';
    }
}

Определите, сколько символов * выведет эта процедура при вызове F(28):

Python Паскаль C++
def F( n ):
  print('*')
  if n >= 1:
    print('*')
    F(n-1)
    F(n-2)

 
procedure F( n: integer );
begin
  write('*');
  if n >= 1 then begin
    write('*');
    F(n-1);
    F(n-2);
  end;
end;
void F( int n )
{
  cout << '*';
  if( n >= 1 ) {
    cout << '*';
    F(n-1);
    F(n-2);
    }
}

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

F(n) = 1+2n при n < 5
F(n) = 2·(n + 1)·F(n‐2), если n ≥ 5 и делится на 3,
F(n) = 2·n + 1 + F(n‐1) + 2·F(n‐2), если n ≥ 5 и не
делится на 3.

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

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

F(n) = 5‐n при n < 5
F(n) = 4· (n ‐ 5)·F(n‐5), если n ≥ 5 и делится на 3,
F(n) = 3n + 2·F(n‐1) + F(n‐2), если n ≥ 5 и не
делится на 3.

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

Поделиться
Класснуть