Forum: D Programlama Dili RSS
Meta programlamayla faktöriyel
acehreli (Moderatör) #1
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Meta programlamayla faktöriyel
Bilmeyenler için: kabaca, şablonlardan yararlanan derleme zamanı işlemlerine "meta programlama" deniyor.

Meşhur faktöriyelin derleme zamanında şablonlarla hesaplanması:

import std.stdio;
 
// Genel tanımı: n! = n * (n - 1)!
ulong faktöriyel(ulong değer)()
{
    return değer * faktöriyel!(değer - 1UL)();
}
 
// Özyinelemeyi kırmak için 0 için özellemesi
ulong faktöriyel(ulong değer : 0)()
{
    return 1;
}
 
void main()
{
    writefln("ulong.max: % 22s", ulong.max);
    writefln("           % 22s", faktöriyel!20());
}

Pek de iyi gözle bakılmayan özyinelemeyi kullanıyor ama idare edin... :D Zaten çok büyük sayılar kullanamıyoruz, çünkü ulong türü en fazla 20!'nin sonucunu tutabiliyor; 21! taşıyor ve ondan sonrasının değerleri yanlış oluyor.

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-19, 19:39:59 (UTC -08:00)