Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Рекурсия в Си

6.9K
27 марта 2011 года
fen1xxx
63 / / 04.11.2010
Я два часа уже парюсь, не могу понять как сделать правильно. Мне нужно рекурсивно подсчитать сумму ряда 1/1+1/2+1/3...1/N.

Вот мой нерабочий вариант:

Код:
#include <stdio.h>
double a=0.0;
double sum(int n)
{
    if(n>0) return a+=1./sum(n--);
    else return 1;
}

void main()
{
    int N;
    printf("Vvedite N: "); 
    scanf_s("%i", &N);
    printf("%.2lf\n", sum(N));
}


Я понимаю почему не работает, но не знаю как исправить. Может кто подскажет?
278
27 марта 2011 года
Alexander92
1.1K / / 04.08.2008
Код:
#include <iostream>
using namespace std;

double get_sum(int n) {
    return (n == 1) ? 1 : (1. / n) + get_sum(n-1);
}

int main(void) {
    int n = 0;
    cin >> n;
    cout << get_sum(n) << endl;
}


Ты не понимаешь, почему не работает, раз не можешь исправить. :) Почитай про префиксный и постфиксный декремент. При вызове
[QUOTE=fen1xxx]
 
Код:
sum(n--)

[/QUOTE]
в функцию передается то же самое значение n.
6.9K
27 марта 2011 года
fen1xxx
63 / / 04.11.2010
Цитата: Alexander92
Код:
#include <iostream>
using namespace std;

double get_sum(int n) {
    return (n == 1) ? 1 : (1. / n) + get_sum(n-1);
}

int main(void) {
    int n = 0;
    cin >> n;
    cout << get_sum(n) << endl;
}


Ты не понимаешь, почему не работает, раз не можешь исправить. :) Почитай про префиксный и постфиксный декремент. При вызове

в функцию передается то же самое значение n.



Вот я лохонулся!) Спасибо за помощь!!!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог