재귀함수 치환 모형
시스템 2023. 10. 5. 02:37function plus(a, b) {
return a === 0 ? b : plus(dec(a), inc(b));
}
function inc(v) {
return v + 1;
}
function dec(v) {
return v - 1;
}
/** return a === 0 ? b : plus(dec(a), inc(b));
* plus(4, 5)
* plus(dec(4), inc(5))
* plus(3, 6)
* plus(dec(3), inc(6))
* plus(2, 7)
* plus(dec(2), inc(7))
* plus(1, 8)
* plus(dec(1), inc(8))
* plus(0, 9)
* 9
*/
/** return a === 0 ? b : inc(plus(dec(a), b));
* plus(4, 5)
* inc(plus(dec(4), 5))
* inc(plus(3, 5))
* inc(inc(plus(dec(3), 5)))
* inc(inc(plus(2, 5)))
* inc(inc(inc(plus(dec(2), 5))))
* inc(inc(inc(plus(1, 5))))
* inc(inc(inc(inc(plus(dec(1), 5)))))
* inc(inc(inc(inc(plus(0, 5)))))
* inc(inc(inc(inc(5))))
* inc(inc(inc(6)))
* inc(inc(7))
* inc(8)
* 9
*
*
*/
해당 plus 함수는 재귀함수로 두 수의 합을 구하고 있다.
데이터를 사용한 커뮤니케이션 (0) | 2023.11.11 |
---|---|
웹 이란? (0) | 2023.11.11 |
팩토리얼을 구하는 다른 방법 (1) | 2023.10.05 |
시스템을 대하는 핵심 원리에 대한 생각 (1) | 2023.08.30 |
아토믹 디자인 패턴의 재사용성을 위한 고려 사항 (1) | 2023.08.28 |