ورود / ثبت نام
0
0

سورس پروژه فیبوناچی به زبان جاوا

رایگان!

بعد از عضویت رایگان دانلود کنید.

عضویت در سایت

پروژه فیبوناچی

پروژه فیبوناچی

پروژه که برای شما دوستان آماده کردم پروژه فیبوناچی که سعی کردم به تمام زبان های موجود برای شما در سایت قرار بدم و به صورت رایگان آماده دانلود کنم.این بار هم به زبان جاوا برای شما دوستان آماده کردم که دیگر توضیحی در مورده فیبوناچی نیمیدم که فکر کنم دیگه متوجه شدید که کاره فیبوناچی چی هست و چه جور تابعی است.سورسی که امروز برای شما آماده کردم در چند بخش است که تابع فیبوناچی را در java بررسی میکنید.امید وارم مفید باشه و استفاده کنید.با ام اس پی سافت همراه باشید….

پروژه فیبوناچی

اعداد فیبوناچی هستند توالی صحیح ۰ ، ۱، ۱، ۲، ۳، ۵، ۸، ۱۳، ۲۱،… ، که در آن هر آیتم با اضافه کردن دو جمله ی قبلی شکل گرفته است. این ترتیب را می توان به صورت بازگشتی تعریف شد باشد

برنامه های فیبوناچی تعداد است که پیاده سازی این تعریف به طور مستقیم اغلب به عنوان نمونه های مقدماتی از بازگشت استفاده می شود. با این حال ، بسیاری دیگر از الگوریتم ها برای محاسبه (یا استفاده از) اعداد فیبوناچی نیز وجود دارد.

این برنامه ساده جاوا با استفاده از بازگشت به چاپ ۱۰ عدد اول فیبوناچی به کنسول است.

<span style="color: #000000; font-family: times;"><strong><<<a name="chunk def:Fibonacci.java" href="http://en.literateprograms.org/Fibonacci_numbers_%28Java%29#chunk%20use:Fibonacci.java"></a>Fibonacci.java>>=</strong></span>
<strong>public</strong> <strong>class</strong> <span style="color: #2040a0;">Fibonacci</span> <span style="color: #4444ff;"><strong>{</strong></span>
	<strong>public</strong> <strong>static</strong> <strong>int</strong> <span style="color: #2040a0;">fib</span><span style="color: #4444ff;"><strong>(</strong></span><strong>int</strong> <span style="color: #2040a0;">n</span><span style="color: #4444ff;"><strong>)</strong></span> <span style="color: #4444ff;"><strong>{</strong></span>
                <strong>if</strong> <span style="color: #4444ff;"><strong>(</strong></span><span style="color: #2040a0;">n</span> <span style="color: #4444ff;"><</span> <span style="color: #ff0000;">2</span><span style="color: #4444ff;"><strong>)</strong></span> <span style="color: #4444ff;"><strong>{</strong></span>
                   <strong>return</strong> <span style="color: #2040a0;">n</span><span style="color: #4444ff;">;</span>
                <span style="color: #4444ff;"><strong>}</strong></span>
                <strong>else</strong> <span style="color: #4444ff;"><strong>{</strong></span>
		   <strong>return</strong> <span style="color: #2040a0;">fib</span><span style="color: #4444ff;"><strong>(</strong></span><span style="color: #2040a0;">n</span><span style="color: #4444ff;">-</span><span style="color: #ff0000;">1</span><span style="color: #4444ff;"><strong>)</strong></span><span style="color: #4444ff;">+</span><span style="color: #2040a0;">fib</span><span style="color: #4444ff;"><strong>(</strong></span><span style="color: #2040a0;">n</span><span style="color: #4444ff;">-</span><span style="color: #ff0000;">2</span><span style="color: #4444ff;"><strong>)</strong></span><span style="color: #4444ff;">;</span>
                <span style="color: #4444ff;"><strong>}</strong></span>
	<span style="color: #4444ff;"><strong>}</strong></span>

        <span style="color: #000000; font-family: times;"><a name="chunk use:test main" href="http://en.literateprograms.org/Fibonacci_numbers_%28Java%29#chunk%20def:test%20main"></a>test main</span>
<span style="color: #4444ff;"><strong>} </strong></span>

هرچند به طور مستقیم بر اساس تعریف عدد فیبوناچی، الگوریتم بازگشتی فیبوناچی بسیار گران قیمت است، نیاز به زمان O (2N). همچنین انجام مقدار زیادی از کار برکنار شده، زیرا بسیاری از ارزش های Fibonnaci بسیاری از زمان ابتدا محاسبه است.ساده و خطی در زمان تکرار شونده رویکرد است که محاسبه هر مقدار از دروغ گفتن متوالی می تواند به جلوگیری کرد از این مسائل :

<span style="color: #000000; font-family: times;"><strong><<<a name="chunk def:FibonacciIterative.java" href="http://en.literateprograms.org/Fibonacci_numbers_%28Java%29#chunk%20use:FibonacciIterative.java"></a>FibonacciIterative.java>>=</strong></span>
<strong>public</strong> <strong>class</strong> <span style="color: #2040a0;">FibonacciIterative</span> <span style="color: #4444ff;"><strong>{</strong></span>
	<strong>public</strong> <strong>static</strong> <strong>int</strong> <span style="color: #2040a0;">fib</span><span style="color: #4444ff;"><strong>(</strong></span><strong>int</strong> <span style="color: #2040a0;">n</span><span style="color: #4444ff;"><strong>)</strong></span> <span style="color: #4444ff;"><strong>{</strong></span>
                <strong>int</strong> <span style="color: #2040a0;">prev1</span><span style="color: #4444ff;">=</span><span style="color: #ff0000;">0</span>, <span style="color: #2040a0;">prev2</span><span style="color: #4444ff;">=</span><span style="color: #ff0000;">1</span><span style="color: #4444ff;">;</span>
                <strong>for</strong><span style="color: #4444ff;"><strong>(</strong></span><strong>int</strong> <span style="color: #2040a0;">i</span><span style="color: #4444ff;">=</span><span style="color: #ff0000;">0</span><span style="color: #4444ff;">;</span> <span style="color: #2040a0;">i</span><span style="color: #4444ff;"><</span><span style="color: #2040a0;">n</span><span style="color: #4444ff;">;</span> <span style="color: #2040a0;">i</span><span style="color: #4444ff;">+</span><span style="color: #4444ff;">+</span><span style="color: #4444ff;"><strong>)</strong></span> <span style="color: #4444ff;"><strong>{</strong></span>
                    <strong>int</strong> <span style="color: #2040a0;">savePrev1</span> <span style="color: #4444ff;">=</span> <span style="color: #2040a0;">prev1</span><span style="color: #4444ff;">;</span>
                    <span style="color: #2040a0;">prev1</span> <span style="color: #4444ff;">=</span> <span style="color: #2040a0;">prev2</span><span style="color: #4444ff;">;</span>
                    <span style="color: #2040a0;">prev2</span> <span style="color: #4444ff;">=</span> <span style="color: #2040a0;">savePrev1</span> <span style="color: #4444ff;">+</span> <span style="color: #2040a0;">prev2</span><span style="color: #4444ff;">;</span>
                <span style="color: #4444ff;"><strong>}</strong></span>
                <strong>return</strong> <span style="color: #2040a0;">prev1</span><span style="color: #4444ff;">;</span>
	<span style="color: #4444ff;"><strong>}</strong></span>

     <span style="color: #000000; font-family: times;"><a name="chunk use:test main" href="http://en.literateprograms.org/Fibonacci_numbers_%28Java%29#chunk%20def:test%20main"></a>test main</span><span style="color: #4444ff;"><strong> } </strong></span>

توجه داشته باشید که حتی این پیاده سازی است که تنها مناسب برای مقادیر کوچک از n، از تابع فیبوناچی تصاعدی رشد می کند و ۳۲ – بیت امضا عدد صحیح جاوا فقط ۴۶ عدد اول فیبوناچی می توانید نگه دارید.

 

اگر چه اجرای بازگشتی داده شده در بالا ظریف و نزدیک به تعریف ریاضی است، آن است که خیلی عملی نیست. محاسبه n امین عدد فیبوناچی نیاز به محاسبه دو اعداد فیبوناچی کوچکتر، که به نوبه خود نیاز به دو تماس بازگشتی هر، و به همین ترتیب تا زمانی که تمام شاخه های ۱ برسد. راه حل تکرار شونده سریعتر است، اما هنوز هم بسیاری از محاسبات را تکرار در هنگام محاسبه اعداد فیبوناچی پی در پی است. برای اصلاح این موضوع، ما می توانیم memoization به کش محاسبات قبلی را استخدام کنند.

ما برای اولین بار memoization “حافظه پنهان”، است که فروشگاه ها قبلا محاسبه اعداد فیبوناچی را ایجاد کند. در این حالت استفاده از ArrayList، مقداردهی اولیه با دو عدد اول فیبوناچی، به عنوان حافظه نهان. توجه داشته باشید که ما نیز از با استفاده از ints به استفاده از کلاس جاوا BigInteger، فراهم می کند که عدد صحیح دلخواه، دقت نقل مکان کرد. در نتیجه، اجرای memoized همچنین می تواند بسیار بزرگتر اعداد فیبوناچی از راه حل های قبلی محاسبه (اگر چه آنها نیز می توانست اجرا شده است با استفاده از BigIntegers.

<span style="color: #000000; font-family: times;"><strong><<<a name="chunk def:Memoization cache" href="http://en.literateprograms.org/Fibonacci_numbers_%28Java%29#chunk%20use:Memoization%20cache"></a>Memoization cache>>=</strong></span>
<strong>private</strong> <strong>static</strong> <span style="color: #2040a0;">ArrayList</span><span style="color: #4444ff;"><</span><span style="color: #2040a0;">BigInteger</span><span style="color: #4444ff;">></span> <span style="color: #2040a0;">fibCache</span> <span style="color: #4444ff;">=</span> <strong>new</strong> <span style="color: #2040a0;">ArrayList</span><span style="color: #4444ff;"><</span><span style="color: #2040a0;">BigInteger</span><span style="color: #4444ff;">></span><span style="color: #4444ff;"><strong>(</strong></span><span style="color: #4444ff;"><strong>)</strong></span><span style="color: #4444ff;">;</span>
<strong>static</strong> <span style="color: #4444ff;"><strong>{</strong></span>
      <span style="color: #2040a0;">fibCache</span>.<span style="color: #2040a0;">add</span><span style="color: #4444ff;"><strong>(</strong></span><span style="color: #2040a0;">BigInteger</span>.<span style="color: #2040a0;">ZERO</span><span style="color: #4444ff;"><strong>)</strong></span><span style="color: #4444ff;">;</span>
      <span style="color: #2040a0;">fibCache</span>.<span style="color: #2040a0;">add</span><span style="color: #4444ff;"><strong>(</strong></span><span style="color: #2040a0;">BigInteger</span>.<span style="color: #2040a0;">ONE</span><span style="color: #4444ff;"><strong>)</strong></span><span style="color: #4444ff;">;</span>
<span style="color: #4444ff;"><strong>} </strong></span>

اجرای واقعی از fib عبارتست از () تابع با استفاده از memoization کاملا شبیه به تابع بازگشتی اساسی به نظر می رسد.تفاوت در این است که یک عدد فیبوناچی است فقط محاسبه اگر کش می کند در حال حاضر حاوی مقدار لازم. تازه محاسبه اعداد فیبوناچی به کش اضافه شده، به طوری که تبدیل شدن آنها در هنگام مکالمه بعد به fib عبارتست از () در دسترس است.

<span style="color: #000000; font-family: times;"><strong><<<a name="chunk def:FibonacciMemoized.java" href="http://en.literateprograms.org/Fibonacci_numbers_%28Java%29#chunk%20use:FibonacciMemoized.java"></a>FibonacciMemoized.java>>=</strong></span>
<span style="color: #0000ff;"><strong>import java.math.BigInteger;</strong></span>
<span style="color: #0000ff;"><strong>import java.util.ArrayList;</strong></span>

<strong>public</strong> <strong>class</strong> <span style="color: #2040a0;">FibonacciMemoized</span> <span style="color: #4444ff;"><strong>{</strong></span>

       <span style="color: #000000; font-family: times;"><a name="chunk use:Memoization cache" href="http://en.literateprograms.org/Fibonacci_numbers_%28Java%29#chunk%20def:Memoization%20cache"></a>Memoization cache</span>

       <strong>public</strong> <strong>static</strong> <span style="color: #2040a0;">BigInteger</span> <span style="color: #2040a0;">fib</span><span style="color: #4444ff;"><strong>(</strong></span><strong>int</strong> <span style="color: #2040a0;">n</span><span style="color: #4444ff;"><strong>)</strong></span> <span style="color: #4444ff;"><strong>{</strong></span>
              <strong>if</strong> <span style="color: #4444ff;"><strong>(</strong></span><span style="color: #2040a0;">n</span> <span style="color: #4444ff;">></span><span style="color: #4444ff;">=</span> <span style="color: #2040a0;">fibCache</span>.<span style="color: #2040a0;">size</span><span style="color: #4444ff;"><strong>(</strong></span><span style="color: #4444ff;"><strong>)</strong></span><span style="color: #4444ff;"><strong>)</strong></span> <span style="color: #4444ff;"><strong>{</strong></span>
                  <span style="color: #2040a0;">fibCache</span>.<span style="color: #2040a0;">add</span><span style="color: #4444ff;"><strong>(</strong></span><span style="color: #2040a0;">n</span>, <span style="color: #2040a0;">fib</span><span style="color: #4444ff;"><strong>(</strong></span><span style="color: #2040a0;">n</span><span style="color: #4444ff;">-</span><span style="color: #ff0000;">1</span><span style="color: #4444ff;"><strong>)</strong></span>.<span style="color: #2040a0;">add</span><span style="color: #4444ff;"><strong>(</strong></span><span style="color: #2040a0;">fib</span><span style="color: #4444ff;"><strong>(</strong></span><span style="color: #2040a0;">n</span><span style="color: #4444ff;">-</span><span style="color: #ff0000;">2</span><span style="color: #4444ff;"><strong>)</strong></span><span style="color: #4444ff;"><strong>)</strong></span><span style="color: #4444ff;"><strong>)</strong></span><span style="color: #4444ff;">;</span>
              <span style="color: #4444ff;"><strong>}</strong></span>
              <strong>return</strong> <span style="color: #2040a0;">fibCache</span>.<span style="color: #2040a0;">get</span><span style="color: #4444ff;"><strong>(</strong></span><span style="color: #2040a0;">n</span><span style="color: #4444ff;"><strong>)</strong></span><span style="color: #4444ff;">;</span>
       <span style="color: #4444ff;"><strong>}</strong></span>

        <span style="color: #000000; font-family: times;"><a name="chunk use:test main" href="http://en.literateprograms.org/Fibonacci_numbers_%28Java%29#chunk%20def:test%20main"></a>test main</span>
<span style="color: #4444ff;"><strong>}</strong></span>

ما می توانیم تمام پیاده سازی های فوق تا به این حد با استفاده از یک حلقه ساده آزمون :

<span style="color: #000000; font-family: times;"><strong><<<a name="chunk def:test main" href="http://en.literateprograms.org/Fibonacci_numbers_%28Java%29#chunk%20use:test%20main"></a>test main>>=</strong></span>
<strong>public</strong> <strong>static</strong> <strong>void</strong> <span style="color: #2040a0;">main</span><span style="color: #4444ff;"><strong>(</strong></span><span style="color: #2040a0;">String</span><span style="color: #4444ff;"><strong>[</strong></span><span style="color: #4444ff;"><strong>]</strong></span> <span style="color: #2040a0;">args</span><span style="color: #4444ff;"><strong>)</strong></span> <span style="color: #4444ff;"><strong>{</strong></span>
    <strong>for</strong> <span style="color: #4444ff;"><strong>(</strong></span><strong>int</strong> <span style="color: #2040a0;">i</span><span style="color: #4444ff;">=</span><span style="color: #ff0000;">0</span><span style="color: #4444ff;">;</span> <span style="color: #2040a0;">i</span><span style="color: #4444ff;"><</span><span style="color: #4444ff;">=</span><span style="color: #ff0000;">46</span><span style="color: #4444ff;">;</span> <span style="color: #2040a0;">i</span><span style="color: #4444ff;">+</span><span style="color: #4444ff;">+</span><span style="color: #4444ff;"><strong>)</strong></span>
        <span style="color: #2040a0;">System</span>.<span style="color: #2040a0;">out</span>.<span style="color: #2040a0;">print</span><span style="color: #4444ff;"><strong>(</strong></span><span style="color: #2040a0;">fib</span><span style="color: #4444ff;"><strong>(</strong></span><span style="color: #2040a0;">i</span><span style="color: #4444ff;"><strong>)</strong></span><span style="color: #4444ff;">+</span><span style="color: #008000;">", "</span><span style="color: #4444ff;"><strong>)</strong></span><span style="color: #4444ff;">;</span>
<span style="color: #4444ff;"><strong>} </strong></span>

نقد و بررسی‌ها

اولین کسی باشید که دیدگاهی می نویسد “سورس پروژه فیبوناچی به زبان جاوا”

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

هیچ دیدگاهی برای این محصول نوشته نشده است.