#include <iostream>
using namespace std;
int fibonacci(int n);
int main()
{
int a;
cin >> a;
cout << fibonacci(a);
return 0;
}
int fibonacci(int n)
{
if (n <= 1)
{
return 1;
}
else
{
return fibonacci(n - 1) + fibonacci(n - 2);
}
return 0;
}
재귀함수를 이용해 만든 피보나치 수열입니다.
이렇게 return 방식을 이용해서 피보나치 수열이 나오도록 했습니다.
여기서 막혔던 점은 제가 return이라는 것에 대한 정의를 잘 몰랐던 것 같습니다. 이후 자세히 안 후 보완해서 포스팅을 적을 것입니다.
2번문제
cout << 1 - 1 / pow(2, n);
고민하다가 낸 해결책, 이런식으로 제곱을 구하기 됐습니다. 이제 그 합을 연달아 구해야 하니 입력값이 정해져있는 것이니 for문을 활용하면 될 것 같습니다.
#include <iostream>
using namespace std;
int main()
{
int n = 0;
double sum = 1;
cin >> n;
for (int i = 1; i <= n; i++)
{
sum += (pow(-1, i)) * (1 / pow(2, i));
}
cout << "The sum is " << sum << endl;
return 0;
}
정답인지는 모르겠습니다만 이렇게 해주었습니다. sum에 1이 먼저 들어가야 하기 때문에 1을 넣어준 것이 특징이며(맞는 정답일까요?) 그리고 for문을 활용해서 계속해서 반복되는 양의 정수 n을 만들어줬습니다.
막힌 부분은 sum +=을 활용하는 부분이었는데 pow(-1, i)를 넣어야하는 곳에 n을 넣는 사소한 실수를 해주어서 5분정도 고민을 했습니다. 디버거를 하면서 찾으니 어떤 부분이 오류가 있는지 찾기 편했습니다.
이 문제를 보고서 처음에는 제곱근을 통해 pow()로 정의하려고 했으나 팩토리얼의 정의를 기억해내고 먼저 n!을 for문으로 한 다음에 계속해서 더하는 과정도 for문을 써서 for문 안에 for문을 사용해야 겠다는 생각을 했습니다.
일단 n의 갯수가 입력받은 숫자로 정해져 있으니 while문이 아닌 for문을 사용해야 겠다는 추론을 했습니다.
for (int i = 1; i <= n; i++)
{
sum *= i;
}
먼저 고민 끝에 끄집어 낸 것은 바로 n!을 구해주는 for문이었습니다. 이런 식으로 하면 for문을 구할 수 있었고 sum은 1로 초기화를 해주었습니다.
#include <iostream>
using namespace std;
int square(int n);
int main()
{
int n = 0;
double sum1 = 0;
cin >> n;
for (int i = 1; i <= n; i++)
{
sum1 += (double)1 / square(i);
}
cout << sum1 << endl;;
return 0;
}
int square(int n)
{
double sum = 1;
for (int i = 1; i <= n; i++)
{
sum *= i;
};
return sum;
}
이번에 조금 오래 걸린 것 같습니다. 계속해서 오류가 났고 방법을 모르겠던 도 sum1 = 0으로 바꿔주고 가장 헷갈렸던 부분은 바로 1 / square(i)를 해줄 때 계속해서 실수가 아닌 정수로 나온다는 것이었습니다. 그런데 전에 강의에서 배웠던 나누기를 할 때 주의해야 할 점인 바로 연산자를 선언해주면서 정수가 되지 않도록 해주는 것입니다.
물론 제가 아직 기초를 배우다 보니 저 연산자가 틀렸을 것 같습니다. 지금 챗gpt가 먹통인 관계로 챗gpt가 된다면 바로 물어본 후 수정하도록 하겠습니다.
'IT 프로그래밍 > C++' 카테고리의 다른 글
MAX MIN을 이용한 양의 정수 n개 배열 최대 최소 C++ (0) | 2024.03.09 |
---|---|
[c++]세 정수 a, b, c를 받은 후 오름차순으로 출력하는 프로그램 (0) | 2024.03.09 |
[2.9] 심볼릭 상수 (0) | 2024.03.07 |
[따배시 2.7] char type (0) | 2024.03.07 |
[따배시 2.6] 불리언 연산자와 조건문 if (0) | 2024.03.07 |