Dart

Dart 언어로 만든 피보나치 수열 재귀호출 함수 예제

수알치 2021. 6. 11. 15:25

Dart 언어로 만든 피보나치 수열 재귀호출 함수 예제 

글. 수알치 오상문 

 

다트 예제로 나오는 피보나치 제귀호출 함수를 살펴보겠습니다. 다트 소스 코드는 다음과 같습니다.

 

void main() {
  var i = 10;
  print('fibonacci($i) = ${fibonacci(i)}');
}
/// Computes the nth Fibonacci number.
int fibonacci(int n) {
  return n < 2 ? n : (fibonacci(n - 1) + fibonacci(n - 2));
}

  

다트 언어는 C/C++ 언어처럼 main() 함수가 프로그램의 중심입니다. 그리고 다른 함수와 클래스 등의 자료를 이용한 코딩이 추가될 수 있습니다. 

 

먼저 피보나치 수열 예제에서 main() 함수를 살펴보겠습니다. 다트 문법의 상당 부분은 C 언어와 유사합니다. 이 예제의 main() 함수도 C 언어의 void형 main() 함수와 같은 구조임을 알 수 있습니다. 

 

void main( ) {

  // main 함수 몸통 ... 

}

 

피보나치 예제의 main() 함수는 다음처럼 작성되었습니다.

 

void main( ) {
  var i = 10;
  print('fibonacci($i) = ${fibonacci(i)}');
}

 

다트는 변수를 만들 때 정적(지정식)/자동(추론식) 자료형 지정이 모두 가능합니다. 즉, C 언어처럼 자료형을 직접 지정할 수도 있고, 파이썬처럼 변수에 할당되는 값을 이용한 자동 자료형 지정이 가능합니다. 

 

  var i = 10;   // var를 이용한 동적 자료형(int) 변수 생성 및 초기화  

    또는 

  int i = 10;   // int 자료형을 직접 지정한 변수 생성 및 초기화  

 

참고로 다트는 파이썬처럼 문자열 표기에 작은 따옴표(' ')나 큰 따옴표(" ")를 모두 사용할 수 있습니다. 

 

  '문자열 표현'  또는 "문자열 표현"

 

그리고 문자열 안에 외부 변수나 코드를 표현하려면 $변수 또는 ${코드}처럼 표기합니다. 

 

  int i = 100;

 

  print('$i');                  // 변수 i를 $i로 표기 --> 100 출력  

  print('${fibonacci(i)}');  // fibonicci(i) 호출 코드를 중괄호 { }로 감싸서 표기

                                 // fibonacci(10) 호출 반환값 출력 

 

이제 아래 코드가 무엇인지 이해할 수 있을 것입니다.

 

  print('fibonacci($i) = ${fibonacci(i)}');   // 출력: fibonacci(10) = 55

 

다트 설명문(주석문)은 C/C++ 언어처럼 두 가지 표기가 가능합니다.

 

// 설명...

 

또는 

 

/*

 * 설명...

*/ 

 

그리고 ///로 시작하는 설명문도 가능하며 힌트 출력 기능에 사용됩니다.


/// 설명... 

 

다음은 피보나치 수열을 계산하는 재귀호출 함수입니다. C 언어 문법과 같음을 알 수 있습니다.

함수 프로토타입이나 내부 return 명령, 조건 3항 연산자(? :) 모두 C 언어 문법과 같습니다.  


int fibonacci(int n) {
  return n < 2 ? n : (fibonacci(n - 1) + fibonacci(n - 2));
}

 

참고로 return 문장 부분은 다음 코드와 같습니다.

 

  if(n<2)

    return n;

  return (fibonacci(n - 1) + fibonacci(n - 2);

 

<이상>

 

반응형