JBTALKS.CC

标题: 『C++』菜鸟问关于math .__. [打印本页]

作者: 聖賢    时间: 2011-11-2 02:50 AM
标题: 『C++』菜鸟问关于math .__.
本帖最后由 聖賢 于 2011-11-2 03:06 AM 编辑

请问这个equetion是怎样算的啊....
  1. #include<iostream>
  2. using namespace std;
  3. long fib(long n)
  4. {
  5.   if (n==1)
  6.   return 1;
  7.   else if (n==0)
  8.   return 0;
  9.   else return fib(n-1)+fib(n-2);
  10. }
  11. int main()
  12.       {   
  13.             int x, n, b;
  14.             for(x=0;x<5;x++)
  15.              {
  16.                   cout<<"enter an integer: ";
  17.                   cin>>n;
  18.                   b=fib(n);
  19.                   cout<<"Fibonacci("<<n<<") :"<<b<<endl;
  20.              }               
  21.       system("pause");
  22.       return 0;
复制代码
  1. else return fib(n-1)+fib(n-2);
复制代码
有人可以解释电脑是怎样做这个equetion么??
作者: newpages4u    时间: 2011-11-2 04:38 AM
一直recursive到找出答案为止
作者: ~Zero    时间: 2011-11-2 09:57 AM
let n = 5
fib(5) = fib(4) + fib(3)
fib(4) = fib(3) + fib(2)
fib(3) = fib(2) + fib(1)
fib(2) = fib(1) + fib(0) = 1 + 0 = 1

所以
fib(3) = fib(2) + fib(1) = 1 + 1 = 2
fib(4) = fib(3) + fib(2) = 2 + 1 = 3
fib(5) = fib(4) + fib(3) = 3 + 2 = 5
作者: 聖賢    时间: 2011-11-2 05:49 PM
if n=10
   b=55


b=fib(10-1)+fib(10-2)
b怎样=55呢,,,,对不起我真的很笨T.T
作者: 随苇轻摇    时间: 2011-11-2 06:13 PM
if n=10
   b=55


b=fib(10-1)+fib(10-2)
b怎样=55呢,,,,对不起我真的很笨T.T
聖賢 发表于 2011-11-2 05:49 PM



    let n = 10
fib(10) = fib(9) + fib(8)=55
fib(9) = fib(8) + fib(7)=34
fib(8) = fib(7) + fib(6)=21
fib(7) = fib(6) + fib(5)=13
fib(6) = fib(5) + fib(4)=8
fib(5) = fib(4) + fib(3)=5
fib(4) = fib(3) + fib(2)=3
fib(3) = fib(2) + fib(1)=  2
fib(2) = fib(1) + fib(0)=  1
fib(1) =                             1
fib(0) =    0
作者: 聖賢    时间: 2011-11-3 03:13 PM
回复 5# 随苇轻摇


    明白了,
意思就是,,,
fib(4)=fib(3)+fib(2)
fib(4)=( fib(2)+fib(1) ) +( fib(1)+ fib(0) )
是这样么??刚才吃饭的时候在想着就明白了
谢谢哦




欢迎光临 JBTALKS.CC (https://www.jbtalks.cc/) Powered by Discuz! X2.5