我得到了以下信息的任务:
- 输入:两个自然数n, m∈n 0
- 输出:n和m的十进制表示的不同位数的个数
输入:两个自然数n,k输出:n二进制表示的第2^k位的数字
我的想法是:
stelle :: Int -> Int -> Int
stelle n 0 = mod n 2
stelle n k = stelle (div n 2) (k-1)
stelle n k = n k <= O = error
在最后一行,haskell显示有一个错误。用这行代码,我想表明n和k必须是自然数,所以如果n, k <= 0,则代码不可用。有人能帮我一下吗?
我的第二次尝试是:
stelle :: Int -> Int -> Int
stelle n 0 = mod n 2
stelle n k
| n < 0 && k < 0 = error "Vorraussetzung nicht erfüllt"
| n >= 0 && k >= 0 = (div n 2) (k-1)
你可以使用这样的保护符:
stelle :: Int -> Int -> Int
stelle n k |n < 0 || k < O= error "Vorraussetzung nicht erfüllt"
stelle n 0 = mod n 2
stelle n k = stelle (div n 2) (k-1)