Рекурсивное вычисление суммы ряда - C (СИ)

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

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

Необходимо составить рекурсивную функцию вот этого выражения y=(1+4+7+...+301)/(2+5+8+...+272). Получается вот такая вот ахинея)
#include <stdio.h>
 
int sum_k(int k)
{
    if(k<=1) return 1;
    else return (k+(sum_k(k-3)));
}
 
int sum_m(int m)
{
    if(m<=2) return 1;
    else return (m+(sum_m(m-3)));
}
 
int main()
{
    int n,p;
    printf("Enter number : ");
    scanf("%d%d",&n,&p);
    printf("%d \n",sum_k(n)/sum_m(p));
    return 0;
}
Функцию sum_k все нормально считает. Проблема состоит в функции sum_m,а именно не выполняется условие m<=2. В итоге сумма чисел первой функции равняется сумме чисел второй функции и при делении получается 1. Помогите разобраться

Решение задачи: «Рекурсивное вычисление суммы ряда»

textual
Листинг программы
#include <stdio.h>
float sum_k(float k)
{
    if (k<3) return k;
    else return (k + (sum_k(k - 3)));
}
int main()
{
    float n, p;
    printf("Enter number : ");
scanf("%f%f", &n, &p);
    printf("%f \n", sum_k(n) / sum_k(p));
    return 0;
}

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


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

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

15   голосов , оценка 4.067 из 5
Похожие ответы