您的位置:首页 > 其它

CISCO Router PPPOE server与client配置(原创)

2010-08-27 18:52 344 查看
1.9 略

1.10 略

1.11

{- recursive style
f3' n
| n<3 = n
| otherwise = f3(n-1) + 2*f3(n-2) + 3*f3(n-3)
-}

getBegin n = n-(fromIntegral t)-1
where t = floor (n-3) ::Integer

f3 n
| n<3 = n
| otherwise = f3_iter b (b-1) (b-2) (n-2)
where b = getBegin n
f3_iter a _ _ 0 = a
f3_iter a b c k = f3_iter (a+2*b+3*c) a b (k-1)

 1.12

pascal :: Integer -> Integer -> Integer
pascal n k
| k==1 = 1
| n==k = 1
| k<n  = pascal (n-1) k + (pascal (n-1) (k-1))
| otherwise = error "Invalid!"

 1.13 略

 1.14 略

 1.15 略

 1.16

-- Iterative version of fast-exp
fast_exp :: (Num a)=> a -> Integer -> a
fast_exp b n = exp_iter b n 1
where exp_iter _ 0 a = a
exp_iter b n a = if (even n ) then exp_iter (b*b) (n `div` 2) a
else exp_iter b (n-1) (a*b)

 1.17 略

 1.18

fast_mult :: Integer -> Integer -> Integer
fast_mult a b = fast_iter a b 0
where fast_iter _ 0 s = s
fast_iter a b s = if (even b) then fast_iter (a*2) (b `div` 2) s
else fast_iter a (b-1) (s+a)

 1.19

fast_fib :: Integer -> Integer
fast_fib n = fast_iter 1 0 0 1 n
where fast_iter _ b _ _ 0 = b
fast_iter a b p q count =
if (even count) then
fast_iter a b (p*p+q*q) (p*q+q*p+q*q) (count `div` 2)
else
fast_iter (b*q+a*q+a*p) (b*p+a*q) p q (count-1)

fib :: Integer -> Integer
fib 0 =1
fib 1 =1
fib n = fib (n-1) + fib (n-2)


 
1.20 略

  1.21

smallestDivesor :: Integer -> Integer
smallestDivesor n = divTry 2 n
where divTry a n
| a*a > n  = n
| n `mod` a ==0 = a
| otherwise = divTry (a+1) n

main :: IO ()
main = do mapM_ (putStrLn.show.smallestDivesor) [199,1999,19999]

 1.22 略

 1.23

smallestDivesor' :: Integer -> Integer
smallestDivesor' n = divTry 2 n
where divTry a n
| a*a > n  = n
| n `mod` a ==0 = a
| otherwise = divTry (next a) n
next a = if a==2 then 3 else (a+2)

 1.24~1.28 略 质数问题,以后总结

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: