2016-04-10 61 views
0

您好,我在C++中關於斐波那契試圖搜索谷歌的錯誤,但我沒有找到解決方案/解釋。斐波那契C++ - 從'int'無效轉換爲'int *'並初始化'int fibo(int,int *,int *)'的參數2/3'

有代碼:

#include <stdio.h> 
#include <stdlib.h> 
#include <iostream> 
#include <cmath> 
using namespace std; 

int fibo(int,int*,int*); 
int conta=0; 

int main() { 
    int n,m,f; 
    int fibN=1; 
    int fibNMeno1=0; 
    cout << "Calcolo del numero di Fibonacci di indice n \n \n" << endl; 
    cout << "Introdurre n (positivo e minore di 47:" << endl; 
    cin >> n; 
    n=abs(n/1); 

    if (n<1) { 
     fibN=0; 
    } 
    else { 
     fibo(n,fibN,fibNMeno1); 
    } 

    cout << "\n Fibonacci di indice " << n << "vale: " << fibN << endl; 
    cout << "\n numero di chiamate ricorsive: " << conta << "\n\n" << endl; 
} 

int fibo(int n, int*pfn, int* pfnMeno1) { 
    int t; 
    int tFn,tFnMeno1,tF; 
    conta++; 
    if (n==1) { 
     *pfn=1; *pfnMeno1=0; return 1; 
    } 
    else { 
     t=n%2; n=n/2; 
     fibo(n,pfn,pfnMeno1); 
     tFn=(*pfn)*(*pfn)+2*(*pfn)*(*pfnMeno1); 
     tFnMeno1=(*pfn)*(*pfn) + (*pfnMeno1)*(*pfnMeno1); 
     if(t) { 
      tF=tFn; 
      tFn=tFn + tFnMeno1; 
      tFnMeno1=tF; 
     } 
     *pfn=tFn; 
     *pfnMeno1=tFnMeno1; 
     return 3; 
    } 

} 

哪裏錯誤?它如何在C++上使用*?

fibonacci.cpp: In function ‘int main()’: 
    fibonacci.cpp:23:22: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive] 
    fibo(n,fibN,fibNMeno1); 
         ^
    fibonacci.cpp:7:5: note: initializing argument 2 of ‘int fibo(int, int*, int*)’ 
    int fibo(int,int*,int*); 
     ^
    fibonacci.cpp:23:22: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive] 
    fibo(n,fibN,fibNMeno1); 
         ^
    fibonacci.cpp:7:5: note: initializing argument 3 of ‘int fibo(int, int*, int*)’ 
    int fibo(int,int*,int*); 

回答

0

fibN/fibNMeno1有int類型,但是你的函數請求。 int *類型,它是一個指向int的指針。

如果你想*你需要把你的局部變量的ADRESS(&符號),這樣通過一個int INT:

fibo(n,&fibN,&fibNMeno1); 
+0

非常感謝! – Tryneed

0

,因爲你可能要fibo(n,&fibN,&fibNMeno1),而不是fibo(n,fibN,fibNMeno1) ...

您的fibo函數需要一個int和兩個指針。你打三個電話。因此編譯器無法進行隱式轉換。

+0

非常感謝! – Tryneed