Scala 프로그래밍 과제 3

   

  • 제출방법 : 작성한 코드를 ‘hw3.scala’라는 이름으로 저장한 후 아래 출력 화면을 캡쳐한 이미지와 함께 압축하여 ‘학번_hw3.zip’ 로 저장하세요. 압축된 파일을 이루리 과제 게시판에 업로드하면 됩니다.
  • 제출기한 : 4월 22일 수요일 11:59pm

       

과제 진행 시 어려운 점이 있으면 이루리 게시판을 이용해 질문하세요. 게시판을 통해 하기 어려운 질문이라면 아래 조교의 이메일을 통해 문의하시기 바랍니다.

   

조교: 문선아(moonsun5319@kangwon.ac.kr)

   


  1. 정수 $n$을 입력받아 $1$부터 $n$까지의 합을 구하는 함수 sum을 작성하세요. 단, 공식을 사용하지말고 자기호출 함수로 작성하세요.
  // 입력 n은 0보다 큰 정수라고 가정합니다.

  def sum(n: Int): Int = {
    // 자기호출 함수를 사용하여 계산합니다.
  }
  println("** p1 **")
  println(sum(100))

 

출력 예시: p1

   


  1. 숫자 $n$을 입력 받아 $n!$을 계산하는 팩토리얼 함수를 작성하세요. 단, 자기호출 함수로 작성하세요.
// 입력 n은 0보다 큰 정수라고 가정합니다.

def fac(n: Int): Int = {
  // n이 1이면 1로 출력합니다
  // 그렇지 않으면 재귀함수를 사용하여 계산합니다.
}
println("** p2 **")
println(fac(9))

 

출력 예시: p2

   


  1. 피보나치 숫자를 출력하는 함수를 작성하세요. 단, 공식을 사용하지말고 자기호출 함수로 작성하세요.
// 입력 n은 0보다 큰 정수라고 가정합니다.

def fib(n: Int): Int = n match {
  // n 이 1 또는 2면 1을 출력합니다.
  // n이 3 이상인 경우에는
}
println("** p3 **")
println(fac(10))

 

출력 예시: p3

   


  1. 최대 공약수를 계산하는 함수를 작성하세요. 단, 자기호출 함수로 유클리드 호제법을 이용하여 작성하세요.
// 입력 m과 n은 0 이상이고 m+n은 0보다 크다고 가정합니다.

def gcd(n: Int, m: Int): Int = {
  // 작은 값과 큰 값을 먼저 출력합니다.
  // 유클리드 호제법을 사용하여 자기호출 함수로 계산하세요
}
println("** p4 **")
println(gcd(15,20))

 

출력 예시: p4

   


  1. 정수 리스트에서 가장 큰 값을 찾아내는 함수를 작성하세요. 자기호출 함수로 작성하세요.
// 입력 list는 List(3, 4, 14, 7, 2)와 같은 형태의 정수 리스트라고 가정합니다.

def max(list: List[Int]): Int = {
  // 정수 리스트에서 가장 큰 값을 반환하는 자기호출 함수를 작성하세요.
  // 빈 리스트를 입력받으면 0을 반환하세요.
}
println("** p5 **")
println(max(x))

 

출력 예시: p5