程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++根本算法思惟之遞推算法思惟

C++根本算法思惟之遞推算法思惟

編輯:關於C++

C++根本算法思惟之遞推算法思惟。本站提示廣大學習愛好者:(C++根本算法思惟之遞推算法思惟)文章只能為提供參考,不一定能成為您想要的結果。以下是C++根本算法思惟之遞推算法思惟正文


遞推算法長短經常用的算法思惟,在數學盤算等場所有著普遍的運用。遞推算法合適有顯著公式紀律的場所。

遞推算法根本思惟
遞推算法是一種感性思想莫斯的代表,依據已有的數據和關系,慢慢推到而獲得成果。遞推算法的履行進程以下:

(1)依據已知成果和關系,求解中央成果。

(2)斷定能否到達請求,假如沒有到達,則持續依據已知成果和關系求解中央成果。假如知足請求,則表現尋覓到一個准確謎底。

遞推算法須要用戶曉得謎底和成績之間的邏輯關系。在很多數學成績中,都有明白的盤算公式可以遵守,是以可以采取遞推算法來完成。

遞推算法示例
數學外面的斐波那契數列是一個應用遞推算法的經典例子。

13世紀意年夜利數學家斐波那契的《算盤書》中記錄了典范的兔子產仔成績,其年夜意以下:

假如一對一個月年夜的兔子今後每個月都可以生一對小兔子,而一對重生的兔子出身兩個月才可以生出小兔子。也就是,1月份出身,3月份開端產仔。那末假定一年內沒有發生兔子逝世亡事宜,那末1年以後共有若干對兔子呢?

1.遞歸算法
我們來剖析一下兔子產仔成績。我們先逐月看每個月兔子的對數。

第一個月:1對兔子;

第二個月:1對兔子;

第三個月:2對兔子;

第四個月:3對兔子;

第五個月:5對兔子;

第六個月:8對兔子;

………………

從下面可以看出,從第三個月開端,每一個月的兔子總對數等於前兩個月兔子數的總和。響應的盤算公式以下:

第n個月兔子總數Fn=Fn-1+Fn-2。

這裡初始第一個月的兔子數F1=1,第二個月的兔子數F2=1。

可以用遞歸公式來求解。為了通用型的便利,我們可以編寫一個算法,用於盤算斐波那契數列成績,依照這個思慮來編寫響應的兔子產仔成績的求解算法,示例代碼以下:

/*
輸出參數n為閱歷的時光(單元是月),法式中經由過程遞歸挪用來完成斐波那契數列的盤算。
*/
int Fibonacci(n)
{
 int t1,t2;
 if(n>0)
 {
  if(n==1||n==2)
  {
   return 1;
  }
  else
  {
   t1=Fibonacci(n-1);
   t2=Fibonacci(n-2);
   return t1+t2;
  } 
 }
 else
 {
  return 0;
 }
}

遞歸算法求解兔子產仔成績
有了上述經由過程的兔子產仔成績算法後,我們可以求解隨意率性的此類成績。這裡給出完全的兔子產仔成績求解代碼:

#include<iostream>
using namespace std;
/*
輸出參數n為閱歷的時光(單元是月),法式中經由過程遞歸挪用來完成斐波那契數列的盤算。
*/
int Fibonacci(int n)
{
 int t1,t2;
 if(n>0)
 {
  if(n==1||n==2)
  {
   return 1;
  }
  else
  {
   t1=Fibonacci(n-1);   //遞歸挪用獲得F(n-1)
   t2=Fibonacci(n-2);   //遞歸挪用獲得F(n-2)
   return t1+t2;
  } 
 }
 else
 {
  return 0;
 }
}
int main()
{
 int n,num;
 cout<<"遞推算法求解兔子產仔成績:"<<endl;
 cout<<"請輸出時光:"<<endl;
 cin>>n;
 num=Fibonacci(n);
 cout<<"經由"<<n<<"個月以後"<<endl;
 cout<<"兔子的數目為:"<<num<<"對"<<endl;
 return 0;
}

履行該法式,用戶輸出12,獲得如圖成果:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved