浏览代码

Improve binomial coeffient example using logical operators

David Peter 1 年之前
父节点
当前提交
6b6d0de3c7
共有 1 个文件被更改,包括 6 次插入12 次删除
  1. 6 12
      examples/binomial_coefficient.nbt

+ 6 - 12
examples/binomial_coefficient.nbt

@@ -2,21 +2,15 @@
 #
 # Adapted from the Python version here:
 # https://en.wikipedia.org/wiki/Binomial_coefficient
-#
-# TODO: This could really benefit from logical and/or operators
 
 fn binomial_coefficient(n: Scalar, k: Scalar) -> Scalar =
-    if k < 0
+    if k < 0 || k > n
         then 0
-        else if k > n
-            then 0
-            else if k > n - k # Take advantage of symmetry
-                then binomial_coefficient(n, n - k)
-                else if k == 0
-                    then 1
-                    else if n <= 1
-                        then 1
-                        else binomial_coefficient(n - 1, k) + binomial_coefficient(n - 1, k - 1)
+        else if k > n - k # Take advantage of symmetry
+            then binomial_coefficient(n, n - k)
+            else if k == 0 || n <= 1
+                then 1
+                else binomial_coefficient(n - 1, k) + binomial_coefficient(n - 1, k - 1)
 
 assert_eq(binomial_coefficient(10, 0), 1)
 assert_eq(binomial_coefficient(10, 1), 10)