Необработанное исключение по адресу 0x01374339: исправить код рекурсии - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дано задание (прикреплено), по которому нужно написать код в си через рекурсию. Сам код у меня составлен, вот только для случая, когда сумма находится при n=1, т.е в 18 строке. Но если n брать больше единицы, то программа выдает ошибку (прикреплено). Понимаю, что эта ошибка сидит в 19 строке, но иначе рекурсию я никак написать не могу. Подскажите, как переписать эту строку, чтобы программа работала при любом n.
Листинг программы
  1. #include "stdafx.h"
  2. #include "math.h"
  3. #include "stdio.h"
  4. #include "locale.h"
  5. #include "conio.h"
  6. #include "stdlib.h"
  7. #include <iostream>
  8. using namespace std;
  9. int zachita(char ch) //защита от некорректного ввода натуральных чисел
  10. {
  11. ...
  12. }
  13. double y(int n)
  14. {
  15. if (n==1) return 0,5;
  16. return 0,3*(y(n)-y(n-1))/(1+fabs(y(n)));
  17. }
  18.  
  19. int _tmain(int argc, _TCHAR* argv[])
  20. {
  21. setlocale(LC_ALL, "Russian");
  22. int n, menu=1;
  23. while (menu==1)
  24. {
  25. double sum = NULL;
  26. printf("\nВведите натуральное n: ");
  27. n = zachita('n');
  28. sum=y(n);
  29. printf("\n\nСумма: %lf\n", sum);
  30. printf("\n1 - Продолжить работу с программой.");
  31. printf("\n2 - Выход из программы.\n");
  32. menu=zachita('menu');
  33. printf("\n");
  34. }
  35. return 0;
  36. }

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

textual
Листинг программы
  1. double x(int n)
  2. {
  3.     if(n == 1)
  4.         return 1;
  5.     return 0.3 * x(n - 1);
  6. }
  7.  
  8. double y(int n)
  9. {
  10.     if(n == 1)
  11.         return 1;
  12.     return x(n - 1) + y(n - 1);
  13. }
  14.  
  15. double sum(int n)
  16. {
  17.     if(!n)
  18.         return 0;
  19.     return sum(n - 1) + x(n) / (1 + y(n));
  20. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.417 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы