بازگشت فیبوناچی با استفاده از نسبت طلایی (شماره طلایی)

ساخت وبلاگ

>اما من می خواهم از شماره طلایی که 1. 618 برای محاسبه فیبوناچی است استفاده کنم. اما تلاش من با شکست مواجه می شود ، من شماره های اشتباهی می گیرم:

int rec (int i)

چگونه می توانم آن را به کار برسانم؟ دنبال کردن 9،380 2 2 نشان های طلا 42 42 نشان نقره 51 51 نشان برنز 23 فوریه 2013 در 22:53 پرسید مروان تووشیا مروان توسهه 1،485 4 4 نشان طلا 24 24 نشان نقره 47 47 نشان برنز شما آن را به طور ضمنی به int می اندازید ، از دو برابر استفاده کنید 23 فوریه 2013 در 22:55 حتی اگر می گویم من با rec (6) تماس می گیرم ، من به جای 13 13. 7 دریافت می کنم 23 فوریه 2013 در 22:56

Ogzd Fibonacci اعداد عدد صحیح هستند ، بنابراین برای آخرین بازگشت باید خوب باشد. مشکل واقعی این است که برای تعداد کم شما نمی توانید از این قانون فقط با اعداد صحیح استفاده کنید.

23 فوریه 2013 در 22:57

همانطور که توسط CAM در زیر پاسخ داده شده است ، برنامه نویسی شما اشتباه نیست. ریاضی شما است. نسبت بین اعداد موجود در سری Fibonacci به صورت مجانبی به PHI نزدیک می شود که اعداد بیشتر می شوند ، اما هرگز دقیقاً PHI نیست.

23 فوریه 2013 در 22:58 NoxBru او همیشه می تواند به Int برگردد ، اگرچه هنوز هم تعداد دقیق فیبوناچی نخواهد بود. 23 فوریه 2013 در 22:59

5 پاسخ 5

مرتب شده توسط: تنظیم مجدد به طور پیش فرض

نسبت طلایی یک شماره غیر منطقی است ، بنابراین لزوماً انتظار ندارید که بتوانید تقریب آن را به یک فرمول وصل کنید تا نتیجه دقیقی کسب کند.

اگر می خواهید بدانید که چگونه شماره فیبوناچی n را به سرعت محاسبه کنید ، در اینجا صفحه ای وجود دارد که روشهای مختلفی را برای کاهش ترتیب زمان اجرا (اما به ترتیب مشکل اجرای) لیست می کند: https://www. nayuki. io/صفحه/الگوریتم های فیبری فیبوناسی

دنبال کردن 17. 7K 6 6 نشان های طلا 53 53 نشان نقره 79 79 نشان برنز 23 فوریه 2013 در 22:56 پاسخ داد 14. 9k 16 16 نشان های طلا 77 77 نشان نقره 128 128 نشان برنز

اگر به فرمول بینه مراجعه می کنید ، چنین کاری انجام دهید:

فیبر طولانی (int i)

توجه داشته باشید که فرمول فوق بازگشتی نیست. من از هیچ فرمول بازگشتی برای محاسبه فیبر آگاه نیستم. توالی با استفاده از نسبت طلایی.

دنبال کردن 23 فوریه 2013 در 22:59 پاسخ داد user000001 user000001 31. 8k 12 12 نشان طلا 80 80 نشان نقره 107 107 نشان برنز

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

23 فوریه 2013 در 23:01 درست. اما چگونه از نسبت طلایی استفاده می کنید؟ 23 فوریه 2013 در 23:02

اگر به N داده شود ، می توانید حداکثر خطای مورد نیاز محدود شده به تقریب PHI مورد نیاز را برای محاسبه شماره فیبوناچی N با استفاده از فرمول Binet محاسبه کنید ، می توانید از یک الگوریتم تقریب نسبت طلایی مانند این استفاده کنید و سپس نتیجه را به Binet وصل کنید. اگرچه من نمی دانم چرا چنین رویکردی لازم یا جالب تلقی می شود.

23 فوریه 2013 در 23:14

@Cam I did a little experiment, and found that the results are correct for n>44من نمی دانم که آیا این نیز از نظر ریاضی اثبات شده است.

23 فوریه 2013 در 23:22

منظورت برای n است<44? In my experiment (gist.github.com/cammckion/5021833) I found that it only worked for small enough values - not large enough values.

23 فوریه 2013 در 23:29

به نظر می رسد ریاضیات شما ناقص است ، و شما اغلب در حال گرد شدن هستید. من از این فرمول استفاده کردم

Double GR = 1. 61803398749895 ؛int rec (int i)Double rec2 (int i)

همچنین ، واقعاً نیازی به بازگشتی نیست:

static int rec (int i)

من تعداد زیادی را بررسی نکردم ، اما به نظر می رسد کاملاً دقیق است (جاوا).

دنبال کردن 23 فوریه 2013 در 23:03 پاسخ داد برنارد بارکر برنارد بارکر 54. 2K 14 14 نشان طلا 104 104 نشان نقره 136 136 نشان های برنز

مجدداً مراقب باشید زیرا از آنجا که ما نسبت طلایی را در اینجا تقریب داده ایم ، نتیجه نادرست خواهد بود.

23 فوریه 2013 در 23:05 Cam آن را دقیق تر کرد (بدیهی است که هنوز هم دقیق نیست). 23 فوریه 2013 در 23:15

در نهایت هنوز هم شکست خواهد خورد - در واقع من آن را با یک اسکریپت پایتون بررسی کردم و در این حالت به نظر می رسد در 71 شکست می خورد.)

23 فوریه 2013 در 23:28

Cam فقط به این دلیل است که نسبت طلایی ارائه شده تخمین است ، اگر چند صد رقم اضافه کنم و از کتابخانه ای استفاده کنم که دارای دقت گسترده باشد ، مدتی طول می کشد ، اما به درستی محاسبه می شود.

23 فوریه 2013 در 23:55

@Dukeling Eventually, it will produce the wrong result, no matter how many digits you have. Once F(n)>1/خطا ، اگر F (n) هنوز صحیح باشد ، F (N+1) اشتباه خواهد شد.

24 فوریه 2013 ساعت 14:35

اینگونه است که شما این کار را انجام می دهید:

Double GR = 1. 61803398749895 ؛Double Fibgoldenratio (int i)

در اینجا مثال خروجی:

1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 51429 832040 134626269 2178309 35245309 35245309 35245309 35245309 35245309 35245309 35245309 35245309 35245309 35245309 57817 39088169 63245986 102334155 165580141 267914296 433494437 701408733203170 1836311903 29712121215073 4807526978752697875269787526974 107432951280099 53316291173 86267571272 1395838624445 225851433717 365435296162 591286729879 95672202202602602605147473011 154800875755555555555555555555555555555555555555555555555555555555555555555555555555055530260473026047302604731 7470319842 10610209857723 17167680177565 27777890035288 4494557021212853 72723460248141 11766903046099099994 1903924449070707070707070607070606070606060606060601 79264 806515533049393 1. 30496954492866E+15 
بازار فارکس...
ما را در سایت بازار فارکس دنبال می کنید

برچسب : نویسنده : زکریا هاشمی بازدید : <-PostHit-> تاريخ : پنجشنبه 9 شهريور 1402 ساعت: 16:04