Необработанное исключение по адресу 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)); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д