#include <stdio.h>
double a=0.0;
double sum(int n)
{
if(n>0) return a+=1./sum(n--);
else return 1;
}
void main()
{
int N;
printf("Vvedite N: ");
scanf_s("%i", &N);
printf("%.2lf\n", sum(N));
}
Рекурсия в Си
Вот мой нерабочий вариант:
Код:
Я понимаю почему не работает, но не знаю как исправить. Может кто подскажет?
Код:
#include <iostream>
using namespace std;
double get_sum(int n) {
return (n == 1) ? 1 : (1. / n) + get_sum(n-1);
}
int main(void) {
int n = 0;
cin >> n;
cout << get_sum(n) << endl;
}
using namespace std;
double get_sum(int n) {
return (n == 1) ? 1 : (1. / n) + get_sum(n-1);
}
int main(void) {
int n = 0;
cin >> n;
cout << get_sum(n) << endl;
}
Ты не понимаешь, почему не работает, раз не можешь исправить. :) Почитай про префиксный и постфиксный декремент. При вызове
[QUOTE=fen1xxx]
Код:
sum(n--)
[/QUOTE]
в функцию передается то же самое значение n.
Цитата: Alexander92
Код:
#include <iostream>
using namespace std;
double get_sum(int n) {
return (n == 1) ? 1 : (1. / n) + get_sum(n-1);
}
int main(void) {
int n = 0;
cin >> n;
cout << get_sum(n) << endl;
}
using namespace std;
double get_sum(int n) {
return (n == 1) ? 1 : (1. / n) + get_sum(n-1);
}
int main(void) {
int n = 0;
cin >> n;
cout << get_sum(n) << endl;
}
Ты не понимаешь, почему не работает, раз не можешь исправить. :) Почитай про префиксный и постфиксный декремент. При вызове
в функцию передается то же самое значение n.
Вот я лохонулся!) Спасибо за помощь!!!