-
Notifications
You must be signed in to change notification settings - Fork 0
/
fibonacci-reciprocals.cpp
68 lines (66 loc) · 1.79 KB
/
fibonacci-reciprocals.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include<iostream>
using namespace std;
bool isFib(int x);
void dispFibsInRange(int s = 1, int e = 10);
void dispFibsReciprocalInRange (int s = 1, int e = 10);
double FibsReciprocalSumInRange (int s =1, int e = 10);
int main()
{
cout<<isFib(7)<<endl;
dispFibsInRange();
dispFibsReciprocalInRange();
cout<<FibsReciprocalSumInRange();
}
/* determines if x is a Fibonacci sequence or not using iterative structure.
Return 1 if x is Fibonacci 0 if otherwise*/
bool isFib(int x)
{
long long int firstNum = 1;
long long int secondNum = 0;
long long int sum = 0;
for(int i=0; i<90; i++)
{
sum = firstNum + secondNum;
firstNum = secondNum;
secondNum = sum;
if(x == firstNum)
return 1;
}
return 0;
}
/* Displays the list of Fibonacci numbers in range with default values 1 to
10 using isFib(int x) function.*/
void dispFibsInRange(int s, int e)
{
for(int i=s; i<e; i++)
{
if(isFib(i))
cout<<i<<", ";
}
cout<<endl;
}
/* Displays the list of Fibonacci numbers reciprocal 1/fib (in decimal format
i.e. real number) in range with default values 1 to 10 using isFib(int x)
function.*/
void dispFibsReciprocalInRange (int s, int e)
{
for(int i=s; i<e; i++)
{
if(isFib(i))
cout<<1/static_cast<double>(i)<<",";
}
cout<<endl;
}
/* Returns the sum of Fibonacci reciprocal 1/(fib) in range with default
values 0 to 10 using isFib(int x) function*/
double FibsReciprocalSumInRange (int s, int e)
{
double sum = 0;
for(int i=s; i<e; i++)
{
if(isFib(i))
sum += (1/static_cast<double>(i));
}
return sum;
}
//Call all functions on function main according to your preferred parameter