0 / 0 / 0
Регистрация: 13.12.2014
Сообщений: 15
1

Необработанное исключение по адресу 0x01374339: исправить код рекурсии

13.04.2015, 20:42. Показов 985. Ответов 9
Метки нет (Все метки)

Дано задание (прикреплено), по которому нужно написать код в си через рекурсию. Сам код у меня составлен, вот только для случая, когда сумма находится при n=1, т.е в 18 строке. Но если n брать больше единицы, то программа выдает ошибку (прикреплено). Понимаю, что эта ошибка сидит в 19 строке, но иначе рекурсию я никак написать не могу. Подскажите, как переписать эту строку, чтобы программа работала при любом n.

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
32
33
34
35
36
37
38
39
40
#include "stdafx.h"
#include "math.h"
#include "stdio.h"
#include "locale.h"
#include "conio.h"
#include "stdlib.h"
#include <iostream>
 
using namespace std;
 
int zachita(char ch) //защита от некорректного ввода натуральных чисел
{
...
}
 
double y(int n)
{
    if (n==1) return 0,5;
    return 0,3*(y(n)-y(n-1))/(1+fabs(y(n)));
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    int n, menu=1;
    while (menu==1)
    {
        double sum = NULL;
        printf("\nВведите натуральное n: ");
        n = zachita('n');
        sum=y(n);
        printf("\n\nСумма: %lf\n", sum);
        printf("\n1 - Продолжить работу с программой.");
        printf("\n2 - Выход из программы.\n");
        menu=zachita('menu');
        printf("\n");
    }
    return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
Необработанное исключение по адресу 0x01374339: исправить код рекурсии   Необработанное исключение по адресу 0x01374339: исправить код рекурсии  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2015, 20:42
Ответы с готовыми решениями:

Необработанное исключение по адресу 0x00F71B85 в lab 12_1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0
Всем привет, ошибка возникает при добавлении переменной minqq1, помогите понять в чем проблема, вот...

Исправить ошибку: необработанное исключение по адресу, нарушение прав доступа при записи по адресу
Помогите, пожалуйста, исправит ошибку. Необработанное исключение по адресу 0x77D88E19 (ntdll.dll)...

Необработанное исключение по адресу, нарушение прав доступа при записи по адресу
вот само задание: Авиарейсы (номер рейса, пункт назначения, время вылета, дата вылета, стоимость...

Необработанное исключение по адресу 0x00ED4891 в strings.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCCC
Программа толком не написан, проверял ранд и возникли проблемы. Ф-ция ранд генерирует одно и тоже...

9
Эксперт PHP
2995 / 2513 / 1183
Регистрация: 14.05.2014
Сообщений: 7,088
Записей в блоге: 1
13.04.2015, 20:47 2
Цитата Сообщение от ileana_kudrins Посмотреть сообщение
C++
1
if (n==1) return 0,5;
а зачем вы ноль возвращаете, а пятерку без дела оставляете?
1
0 / 0 / 0
Регистрация: 13.12.2014
Сообщений: 15
13.04.2015, 20:52  [ТС] 3
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
а зачем вы ноль возвращаете, а пятерку без дела оставляете?
В этой строке все верно, я возвращаю не 0, а 0,5 (1/2). Вся ошибка находится в return-е, но как ее исправить, я не знаю.
0
Эксперт PHP
2995 / 2513 / 1183
Регистрация: 14.05.2014
Сообщений: 7,088
Записей в блоге: 1
13.04.2015, 20:54 4
Цитата Сообщение от ileana_kudrins Посмотреть сообщение
В этой строке все верно,
а я говорю нет и буду продолжать это утверждать, пока Вы запятую на точку не исправите, это раз. А рекурсия у Вас бесконечная, поэтому и исключение о переполнении стека - нет корректного условия выхода из рекурсии, это два.
0
Заблокирован
13.04.2015, 20:54 5
Цитата Сообщение от ileana_kudrins Посмотреть сообщение
В этой строке все верно, я возвращаю не 0, а 0,5 (1/2). Вся ошибка находится в return-е, но как ее исправить, я не знаю.
надо писать через точку, запятая это уже вообще другой оператор: 0.5
0
3170 / 1929 / 313
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
13.04.2015, 21:01 6
Цитата Сообщение от ileana_kudrins Посмотреть сообщение
В этой строке все верно
Оператор "запятая"
0
0 / 0 / 0
Регистрация: 13.12.2014
Сообщений: 15
13.04.2015, 21:42  [ТС] 7
ну так подскажите, как корректно выйти из рекурсии. я только начала писать в си, поэтому для меня это все еще не понятно
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
14.04.2015, 16:54 8
Лучший ответ Сообщение было отмечено ileana_kudrins как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
double x(int n)
{
    if(n == 1)
        return 1;
    return 0.3 * x(n - 1);
}
 
double y(int n)
{
    if(n == 1)
        return 1;
    return x(n - 1) + y(n - 1);
}
 
double sum(int n)
{
    if(!n)
        return 0;
    return sum(n - 1) + x(n) / (1 + y(n));
}
1
0 / 0 / 0
Регистрация: 13.12.2014
Сообщений: 15
14.04.2015, 20:51  [ТС] 9
спасибо, теперь все верно. только if(!n) нужно понимать как if (n!=0) или я путаю?
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
14.04.2015, 20:53 10
C
1
if(n == 0)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2015, 20:53

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Необработанное исключение по адресу 0x00105FD7 в Динамические структуры: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCE09
Необработанное исключение по адресу 0x00105FD7 в Динамические структуры.exe: 0xC0000005: нарушение...

Необработанное исключение по адресу 0x001B3371 в XXX.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDF
Делал консольную змейку и столкнулся вот с такой проблемой. void stena(char **arr) { int y...

Возникло необработанное исключение по адресу 0x73A62CF2: исключение Microsoft C++: std::bad_array_new_length
Доброго времени суток, уважаемые форумчане :) Подскажите начинающему программисту. Ругается на...

Что я сделал не так?Возникло необработанное исключение по адресу 0x7434A9F2 : исключение Microsoft C++: std
//Калькулятор Intrigger #include&lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;string.h&gt; ...


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

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

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