문제
피보나치 수는 F(0) = 0, F(1) = 1일 때, 2 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 점화식입니다. 2 이상의 n이 입력되었을 때, fibonacci 함수를 제작하여 n번째 피보나치 수를 반환해 주세요. 예를 들어 n = 3이라면 2를 반환해주면 됩니다.
나의 풀이
1 2 3 4 5 6 7 8 | def fibonacci(num): first, second = 0, 1 for i in range(num): first, second = second, first + second return first # 아래는 테스트로 출력해 보기 위한 코드입니다. print(fibonacci(3)) | cs |
recursive를 사용하지 않고 간단하게 푼 것이다. for 문으로 반복 하면 first는 이 전 수의 second가 되고 second는 이 전수의 first + second 라는 특징을 그대로 코드로 4번 라인처럼 작성하면 된다.
다른 사람의 풀이
1 2 3 4 5 6 7 8 | def fibonacci(num): f=[0,1] for i in range(2,num+1): f.append(f[i-2]+f[i-1]) return f[num] # 아래는 테스트로 출력해 보기 위한 코드입니다. print(fibonacci(3)) | cs |
list형으로 구현한 방법이다. 주의할 점은 함수에 0, 1 값이 들어가면 반복문 for가 실행되지 않고, 0번째 인댁스에 저장된0이 1번째 인덱스에 저장된 1이 각각의 경우에 retrun 된다.
'Computer Science > Problem Solving' 카테고리의 다른 글
[tryhelloworld]소수 찾기 by파이썬 (0) | 2017.08.14 |
---|---|
[tryhelloworld]최솟값 만들기 by파이썬 (0) | 2017.08.14 |
[tryhelloworld] 같은 수는 싫어 by파이썬 (0) | 2017.08.14 |
[tryhelloword]level1 제일 작은 수 제거하기 by 파이썬 (0) | 2017.08.14 |
[tryhellowrld]level1 행렬의 곱셈 by파이썬 (0) | 2017.07.31 |