Pii Lualla

Akheron 09.01.05 20:42

Piin laskentaa Lua-kielellä

 Tekstiversio  Arvo: 1 (5 ääntä)  Äänestä: +  -
-- Piin laskentaa Lua-kielellä
--
-- Käyttää samaa kaavaa kuin Sharlinin C++-template-toteutus
-- (http://mureakuha.com/koodikirjasto/320), eli
-- 
--                       inf
--                       ___
--             9         \       (i!)²
--    pi = ---------  *   >    ---------
--         2*sqrt(3)     /__   (2i + 1)!
--
--                       i=0
--
-- Lisätietoa Lua:sta löydät osoitteesta http://www.lua.org
--
-- Akheron, aka Petri Lehtinen, 2005

iterations = 25

function fact(n)
  if n == 0 or n == 1 then return 1; end
  return n * fact(n - 1)
end

function pi(n)
  if n == 0 then return 1; end
  return fact(n) * fact(n) / fact(2 * n + 1) + pi(n - 1)
end

print(4.5 / math.sqrt(3) * pi(iterations))

Akheron 18:19 11.1.05 
Eihän noita kertoman ja summan laskemisia pakko ole rekursiivisesti tehdä. Idea kuitenkin tuli suoraan Sharlinin C++-templateilla tehdystä koodipätkästä, jossa homma on halutun lopputuloksen saavuttamiseksi pakko tehdä rekursion omaisesti. Niinpä se on tässäkin toteutettu sillä tavalla.

Tämä koodipätkä ei myöskään esittele juuri mitään Lua:n ominaisuuksia, joiden ansiosta se eroaa muista skriptikielistä tai yleensä mistään kielistä. Voisinpa siis melkein suositella jokaiselle miinuksen antamista ;)
ZcMander 18:42 12.1.05 
Mutta eihän kaikkien koodivinkkien piä esitellä kielen erikois ominaisuuksia.