This commit is contained in:
Leon Wilzer 2022-11-07 21:44:37 +01:00
parent 9f12508a06
commit bbb2f57d87

View File

@ -7,8 +7,9 @@ double euclidean_length(const std::vector<double> &v);
double scalar_product(const std::vector<double> &v, const std::vector<double> &w); double scalar_product(const std::vector<double> &v, const std::vector<double> &w);
std::vector<double> normalize(const std::vector<double> &v); std::vector<double> normalize(const std::vector<double> &v);
double euclidean_distance(const std::vector<double> &v, const std::vector<double> &w); double euclidean_distance(const std::vector<double> &v, const std::vector<double> &w);
void print_dvector(const std::vector<double> &v); void print_dvector(const std::vector<double> &v);
unsigned fibonacci_rec(unsigned n);
unsigned fibonacci_nonrec(unsigned n);
int main() int main()
@ -19,6 +20,8 @@ int main()
std::cout << "scalar product of 'a' and 'b': " << scalar_product(a, b) << '\n'; std::cout << "scalar product of 'a' and 'b': " << scalar_product(a, b) << '\n';
print_dvector(normalize(a)); print_dvector(normalize(a));
std::cout << "distance between 'a' and 'b': " << euclidean_distance(a, b) << '\n'; std::cout << "distance between 'a' and 'b': " << euclidean_distance(a, b) << '\n';
std::cout << "Recursive Fibonacci of 25: " << fibonacci_rec(50) << '\n';
std::cout << "Fibonacci of 50: " << fibonacci_nonrec(50) << '\n';
} }
void print_dvector(const std::vector<double> &v) { void print_dvector(const std::vector<double> &v) {
@ -30,10 +33,7 @@ void print_dvector(const std::vector<double> &v) {
double euclidean_length(const std::vector<double> &v) double euclidean_length(const std::vector<double> &v)
{ {
double sum = 0; double sum = 0;
for(int i=0; i<v.size(); ++i)
{
sum += v[i]*v[i];
}
return std::sqrt(sum); return std::sqrt(sum);
} }
@ -69,3 +69,31 @@ double euclidean_distance(const std::vector<double> &v, const std::vector<double
} }
return std::sqrt(distance); return std::sqrt(distance);
} }
unsigned fibonacci_rec(unsigned n)
{
if(n<=2)
{
return 1l;
}
else
{
return fibonacci_rec(n-1)+fibonacci_rec(n-2);
}
}
unsigned fibonacci_nonrec(unsigned n)
{
unsigned fibo = 0;
unsigned prev_fibo = 1;
unsigned prev_prev_fibo = 0;
for(int i=2; i<=n; ++i)
{
fibo = prev_fibo + prev_prev_fibo;
prev_prev_fibo = prev_fibo;
prev_fibo = fibo;
}
return fibo;
}