Рекурсивное вычисление суммы ряда - C (СИ)
Формулировка задачи:
Необходимо составить рекурсивную функцию вот этого выражения y=(1+4+7+...+301)/(2+5+8+...+272).
Получается вот такая вот ахинея)
Функцию sum_k все нормально считает. Проблема состоит в функции sum_m,а именно не выполняется условие m<=2. В итоге сумма чисел первой функции равняется сумме чисел второй функции и при делении получается 1. Помогите разобраться
#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; }
Решение задачи: «Рекурсивное вычисление суммы ряда»
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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д