File tree Expand file tree Collapse file tree 2 files changed +40
-0
lines changed
main/scala/ch10_recursive
test/scala/ch10_recursive Expand file tree Collapse file tree 2 files changed +40
-0
lines changed Original file line number Diff line number Diff line change 1+ package ch10_recursive
2+
3+ import scala .collection .mutable
4+
5+ object RecursiveDemo {
6+
7+ def calculateStepWays (steps : Int ): Int = {
8+ // use knownResults to avoid duplicated computing
9+ val knownResults = mutable.HashMap .empty[Int , Int ]
10+ steps match {
11+ case 1 => 1
12+ case 2 => 2
13+ case _ => knownResults.get(steps) match {
14+ case Some (result) => result
15+ case None => {
16+ val result = calculateStepWays(steps - 1 ) + calculateStepWays(steps - 2 )
17+ knownResults.put(steps, result)
18+ result
19+ }
20+ }
21+ }
22+ }
23+ }
Original file line number Diff line number Diff line change 1+ package ch10_recursive
2+
3+ import org .scalatest .{FlatSpec , Matchers }
4+
5+ class RecursiveDemoTest extends FlatSpec with Matchers {
6+
7+ behavior of " RecursiveDemoTest"
8+
9+ it should " calculateStepWays" in {
10+ RecursiveDemo .calculateStepWays(1 ) should equal(1 )
11+ RecursiveDemo .calculateStepWays(2 ) should equal(2 )
12+ RecursiveDemo .calculateStepWays(3 ) should equal(3 )
13+ RecursiveDemo .calculateStepWays(4 ) should equal(5 )
14+ RecursiveDemo .calculateStepWays(5 ) should equal(8 )
15+ }
16+
17+ }
You can’t perform that action at this time.
0 commit comments