반응형

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);

 

<이상>

 

반응형

'Dart' 카테고리의 다른 글

Dart 언어 키워드(예약어)  (0) 2021.06.11
Dart, 다트 프로그래밍 맛보기  (0) 2021.06.11
Dart 온라인 코딩 사이트 DartPad  (0) 2021.06.11
Dart 다트 문법 정리  (0) 2021.06.09
30분만에 배우는 Dart 언어 (동영상)  (0) 2021.05.31

+ Recent posts