Я новичок в рекурсии, поэтому я пытаюсь написать простую программу, которая добавляет к n-му числу серии 1/n. Поэтому, если пользователь вводит n = 4, программа добавит 1 + 1/2 + 1/3 + 1/4. Моя программа продолжает выводить, что сумма серии равна 0. Может кто-нибудь объяснить, что я делаю неправильно? Я был бы признателен за помощь. Вот мой код:C Программа: добавление серии с использованием рекурсии
#include <stdio.h>
double sum(double n);
int main() {
double n;
double total;
printf("Enter a positive integer greater than 0: ");
scanf("%lf", &n);
total = sum(n);
printf("Sum: %lf", total);
return 0;
}
double sum(double n) {
if (n == 1)
return 1;
else
return ((1/n) + sum(n - 1));
}
'(1/n)' -> '(1.0/n)' ... 'double sum (int n) {' – BLUEPIXY
@ Решение Bluepixy должно работать. Я также хотел бы отметить, что двойники и равенство не смешиваются хорошо! 'if (n == 1)' может выйти из строя из-за ошибки с плавающей запятой. Вам гораздо лучше использовать неравенство. Если 'n' является' int' (как в решении @ Bluepixy), это не проблема. – Khalos