Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Last_Night
20 / 20 / 8
Регистрация: 02.10.2012
Сообщений: 124
#1

Вычислить рекурсивно функцию

05.02.2013, 00:54. Просмотров 483. Ответов 6
Метки нет (Все метки)

Вычислить рекурсивно функцию : S(n)

1, если n=1
S(n/2), если n=2k
S((3n+1)/2),если n=2k+1
не могу понять что такое k и откуда его брать да и вообще проблемы с рекурсией
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2013, 00:54
Ответы с готовыми решениями:

Вычислить сумму ряда с позиции N до позиции M. Функцию вычисления суммы реализовать рекурсивно.
9. Вычислить сумму ряда (-1)в степени 3n/3n! с позиции N до позиции M. Функцию...

Рекурсивно описать функцию C(n,m)
помогите написать код программы если можно. Рекурсивно описать функцию...

Переписать рекурсивно итерационную функцию.
Кто может записать эту итерационную функцию: double norek(double a, double b,...

Вычислить y=x^N рекурсивно
Вычислить y=x^N по следующему алгоритму: y=(x^(N/2))^2 , если N четное;...

Написать функцию высветляющую все указатели цикла(рекурсивно)
Нужно написать рекурсивную функцию которая будет принимать два указателя(1...

6
Algiz
161 / 161 / 22
Регистрация: 23.02.2011
Сообщений: 347
05.02.2013, 00:59 #2
n=2k - n - четно
n=2k+1 - n - нечетно
1
abit
272 / 271 / 83
Регистрация: 03.02.2013
Сообщений: 772
05.02.2013, 01:02 #3
вероятнее всего подразумевается что речь идёт о целых числах и 2k говорит, что n - делится на 2, т.е. чётно, а 2k+1 что нечётно...

так же если допустить, что здесь речь идёт о сумме, а не о просто S как переменная (потому что если там не было знака суммы или чего ещё - задача тривиальна и всегда вернёт 1), если речь о сумме, то так:

C++
1
2
3
4
5
6
int myfunc(int x)
{
   if (x==1) return 1;
   else if (x%2==0) return x+myfunc(x/2);
   else return x+myfunc((3*x+1)/2);
}
1
Algiz
161 / 161 / 22
Регистрация: 23.02.2011
Сообщений: 347
05.02.2013, 01:03 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
 
int foo(int n){
    if (n == 1)
        return 1;
    if (n % 2 == 0)
        return foo(n / 2);
    else
        return foo((3 * n + 1) / 2);
}
 
int main(){
    int n;
    cin >> n;
    cout << foo(n);
    return 0;
}
1
abit
272 / 271 / 83
Регистрация: 03.02.2013
Сообщений: 772
05.02.2013, 01:07 #5
Цитата Сообщение от Algiz Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
 
int foo(int n){
    if (n == 1)
        return 1;
    if (n % 2 == 0)
        return foo(n / 2);
    else
        return foo((3 * n + 1) / 2);
}
 
int main(){
    int n;
    cin >> n;
    cout << foo(n);
    return 0;
}
ваша функция полностью аналогична
C++
1
2
3
int foo(int n){
        return 1;
}
0
Last_Night
20 / 20 / 8
Регистрация: 02.10.2012
Сообщений: 124
05.02.2013, 01:15  [ТС] #6
n=2k - n - четно
n=2k+1 - n - нечетно
это понял просто запутался(( с К
спасибо всем большое
0
Algiz
161 / 161 / 22
Регистрация: 23.02.2011
Сообщений: 347
05.02.2013, 18:11 #7
abit, да, но ведь именно это и сказано в условии
0
05.02.2013, 18:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2013, 18:11

Рекурсивно вычислить выражение
Вычислить результат выражения...

Вычислить сумму рекурсивно

По заданному X рекурсивно вычислить X^2
Написать программу, высчитывающую X^2. Х задается пользователем. Использовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru