Форум программистов, компьютерный форум CyberForum.ru

программа с рекурсией - C++

Восстановить пароль Регистрация
 
petyahohlov
27 / 22 / 5
Регистрация: 31.07.2013
Сообщений: 119
12.02.2014, 22:35     программа с рекурсией #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream.h>
#include <math.h>
 
double rekyrsia(int ,int ,int );
 
int x=2;
int main()
{
    int a[60],n,i=0;
    cout<<" vvedite n= "<<endl;
    cin>>n;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    i=-1;
    cout<<" sum rekyrsia= "<<rekyrsia(n,*a,i)<<endl;
    return 0;
}
 
double rekyrsia(int n,int *a,int i)
{
    i++;
    double t=0;
    t=a[i]+x*rekyrsia(n,*a,i);
    if(i>n)
    {
        return t;
    }
}
я ещё не очень освоил функции
вот задача: вычислить значение полинома степени n по формуле
http://www.cyberforum.ru/cgi-bin/latex.cgi?{P}_{n}=\sum_{i=0}^{n}*{a}_{i}*{x}^{i}= {a}_{0}+x({a}_{1}+...x({a}_{n-1}+x*{a}_{n})...)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2014, 22:35     программа с рекурсией
Посмотрите здесь:

Программа с рекурсией C++
C++ Задача с рекурсией
с++ с рекурсией C++
C++ Задача с рекурсией!
Помогите с рекурсией C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
12.02.2014, 22:38     программа с рекурсией #2
проверка должна быть перед рекурсивным вызовом. иначе получится бесконечная рекурсия. я про
C++
1
2
3
4
 if(i>n)
    {
        return t;
    }
вторая ошибка: а что если условие не выполняется? что возвращаем? ведь функция должна что-то вернуть.

третья ошибка: сигнатуры не совпадают:
объявлено: double rekyrsia(int ,int ,int )
определено: double rekyrsia(int n,int *a,int i) ...
petyahohlov
27 / 22 / 5
Регистрация: 31.07.2013
Сообщений: 119
12.02.2014, 22:47  [ТС]     программа с рекурсией #3
Цитата Сообщение от DU Посмотреть сообщение
третья ошибка: сигнатуры не совпадают:
объявлено: double rekyrsia(int ,int ,int )
определено: double rekyrsia(int n,int *a,int i) ...
не понимаю это
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
12.02.2014, 22:54     программа с рекурсией #4
сигнатура функции: имя и набор ее аргументов.
в первом случае второй аргумент - int, а во втором - указатель на int (int*).
с точки зрения копилятора это разные функции. в вашем случае типы аргументов
должны совпадать.
petyahohlov
27 / 22 / 5
Регистрация: 31.07.2013
Сообщений: 119
12.02.2014, 23:09  [ТС]     программа с рекурсией #5
Цитата Сообщение от DU Посмотреть сообщение
сигнатура функции: имя и набор ее аргументов.
почему ответ 0
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream.h>
#include <math.h>
 
double rekyrsia(int ,int* ,int );
 
int x=2;
int main()
{
    int a[60],n,i=0;
    cout<<" vvedite n= "<<endl;
    cin>>n;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    i=-1;
    cout<<" sum rekyrsia= "<<rekyrsia(n,a,i)<<endl;
    return 0;
}
 
double rekyrsia(int n,int *a,int i)
{
    double t=0;
    if(i>n)
    {
        return t;
    }
    i++;
    t=a[i]+x*rekyrsia(n,a,i);
    return 0;
}
Добавлено через 53 секунды
а всё, понял
Yandex
Объявления
12.02.2014, 23:09     программа с рекурсией
Ответ Создать тему
Опции темы

Текущее время: 04:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru