Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 피보나치 수열을 코딩하는 방법

피보나치 수열은 수학에서 가장 유명한 수열 중 하나입니다. 계산은 매우 간단합니다. 시퀀스의 각 숫자는 이전 두 숫자의 합입니다.

이 시퀀스는 프로그래밍 방식을 찾았습니다. 종종 알고리즘 및 루프에 대해 개발자를 교육하는 데 사용됩니다.

이 가이드에서는 파이썬에서 피보나치 수열을 코딩하는 방법에 대해 이야기할 것입니다. 피보나치 수열을 구현하는 데 사용할 수 있는 두 가지 접근 방식인 반복 및 재귀를 살펴보겠습니다.

피보나치 수열이란 무엇입니까?

피보나치 수열은 일련의 숫자입니다. 각 숫자는 시퀀스에서 이전 두 숫자의 곱입니다. 시퀀스는 다음과 같이 시작됩니다.

0, 1, 1, 2, 3, 4, 8, 13, 21, 34

새로운 숫자 계산을 중단할 때까지 계속 진행됩니다. 시퀀스에서 다음 숫자를 계산하는 규칙은 다음과 같습니다.

x(n) = x(n-1) + x(n-2)

x(n)은 시퀀스의 다음 숫자입니다. x(n-1)은 이전 항입니다. x(n-2)는 마지막 것 이전의 항입니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

Python 피보나치 수열:반복적 접근

피보나치 수열을 구현하는 반복적인 접근 방식에 대해 이야기하는 것으로 시작하겠습니다.

이 접근 방식은 특정 조건이 충족될 때까지 목록의 다음 숫자를 계산하는 "while" 루프를 사용합니다. while 루프가 실행될 때마다 코드가 반복됩니다. 이것이 접근 방식을 반복적이라고 하는 이유입니다.

몇 가지 초기 값을 설정하여 시작하겠습니다.

terms_to_calculate = 9
n1, n2 = 0, 1
counted = 0

4개의 변수를 선언했습니다.

첫 번째 변수는 계산하려는 값의 수를 추적합니다. 다음 두 변수 n1과 n2는 목록의 처음 두 항목입니다. 이러한 값을 명시해야 합니다. 그렇지 않으면 프로그램이 어디서부터 시작해야 하는지 알 수 없습니다. 이 값은 새 숫자 계산을 시작할 때 변경됩니다.

마지막 변수는 Python 프로그램에서 계산한 용어의 수를 추적합니다.

피보나치 수를 계산하는 루프를 작성해 보겠습니다.

while counted < terms_to_calculate:
	print(n1)
	new_number = n1 + n2
	n1 = n2
	n2 = new_number
	counted += 1

이 while 루프는 우리가 계산한 값의 수가 계산하려는 총 수와 같아질 때까지 실행됩니다. 루프는 n1의 값을 쉘에 출력합니다. 그런 다음 시퀀스의 이전 숫자를 앞의 숫자에 더하여 다음 숫자를 계산합니다.

n1의 값을 n2와 같도록 바꿉니다. 이렇게 하면 n1이 새 숫자 뒤의 첫 번째 숫자가 됩니다. 그런 다음 n2를 새 숫자와 같도록 설정합니다. 다음으로 +=연산자를 사용하여 계산된 변수에 1을 추가합니다.

코드는 다음을 반환합니다.

1

1

2

3

5

8

13

21

우리 프로그램은 피보나치 수열의 처음 9개 값을 성공적으로 계산했습니다!

Python 피보나치 수열:재귀적 접근

피보나치 수열 계산은 재귀의 완벽한 사용 사례입니다. 재귀 함수는 문제를 해결하기 위해 자체적으로 의존하는 함수입니다.

재귀 함수는 문제를 더 작은 문제로 나누고 스스로를 사용하여 해결합니다. 계산하려는 숫자의 수를 추적하는 변수를 초기화하여 시작하겠습니다.

terms_to_calculate = 9

이 프로그램은 하나의 변수만 초기화하면 됩니다. 다음으로 시퀀스의 다음 숫자를 계산하는 함수를 만들 수 있습니다.

def calculate_number(number):
	if number <= 1:
		return number
	else:
		return(calculate_number(number-1) + calculate_number(number-2))

이 함수는 전달된 숫자가 1보다 작거나 같은지 확인합니다. 그렇다면 해당 숫자는 계산 없이 반환됩니다. 그렇지 않으면, 우리는 목록에서 앞의 두 항목의 합을 계산하기 위해 compute_number() 함수를 두 번 호출합니다.

마지막으로 함수를 실행하는 메인 프로그램을 작성해야 합니다.

for number in range(terms_to_calculate):
	print(calculate_number(number))

이 루프는 term_to_calculate의 값과 동일한 횟수로 실행됩니다. 즉, 루프는 9번 실행됩니다. 이 루프는 calculate_number() 순서의 다음 숫자를 계산하는 방법입니다. 이 번호를 콘솔에 인쇄합니다.

코드는 다음을 반환합니다.

1

1

2

3

5

8

13

21

이 코드의 출력은 이전 예제와 동일합니다.

차이점은 우리가 사용한 접근 방식에 있습니다. 시퀀스의 다음 숫자를 계산하기 위해 자신을 호출하는 재귀 함수를 정의했습니다. 재귀적 접근 방식은 이해하기 쉽기 때문에 일반적으로 반복적 접근 방식보다 선호됩니다.

이 코드는 반복 예제보다 훨씬 적은 줄을 사용합니다. 게다가 이 프로그램이 작동하려면 하나의 변수만 초기화하면 됩니다. 반복적인 예제에서는 4개의 변수를 초기화해야 했습니다.

결론

피보나치 수열은 반복 또는 재귀 접근 방식을 사용하여 생성할 수 있습니다.

반복적인 접근 방식은 while 루프에 따라 시퀀스의 다음 숫자를 계산합니다. 재귀적 접근 방식에는 시퀀스의 다음 숫자를 계산하기 위해 자신을 호출하는 함수를 정의하는 것이 포함됩니다.

이제 전문가처럼 Python에서 피보나치 수열을 계산할 준비가 되었습니다!