Необработанное исключение по адресу 0x01374339: исправить код рекурсии - C (СИ)
Формулировка задачи:
Дано задание (прикреплено), по которому нужно написать код в си через рекурсию. Сам код у меня составлен, вот только для случая, когда сумма находится при n=1, т.е в 18 строке. Но если n брать больше единицы, то программа выдает ошибку (прикреплено). Понимаю, что эта ошибка сидит в 19 строке, но иначе рекурсию я никак написать не могу. Подскажите, как переписать эту строку, чтобы программа работала при любом n.
Листинг программы
- #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;
- }
Решение задачи: «Необработанное исключение по адресу 0x01374339: исправить код рекурсии»
textual
Листинг программы
- 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));
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д