2014-11-21 71 views
-1

我很新鮮,以C++和我面臨的下一個問題的困難:用C++,得到F(N + 1)= 3/4 * F(N)4結果

寫一個程序要求用戶輸入一個數字:n 然後計算f(n)。

注意:

 f(0)=3  and  f(n+1) = 3/4 * f(n) + 4 ? 


例如:

 f(1)= 6.25  
     f(2)= 8.69 
     f(3)= 10.52 
     f(4)= 11.89 
     f(5)= 12.92 

========================= ===========================

那麼,我該如何解決這個問題呢?

感謝所有..

我試試這個代碼依賴於先生paxdiablo答案:

#include<iostream> 
using namespace std; 
int main() 
{ 
    double x=0.0; 
    cout<<" enter an integer N:"; 
    cin>> x; 

    double f1(double x) 
    { 
     if x==0.0 
      return 3; 
     return 3/4 * f1 (x-1) + 4; 
    } 

return 0; 
} 

但程序一直沒有運行!

============================================== ==

正確的解決辦法是:

#include<iostream> 
#include<iomanip> //To enable "setprecision" tool 
using namespace std; 

double f(int x){ 
    if (x==0) 
     {return 3;} 
    return (3.0/4.0) * f(x-1) + 4.0; //we add zeros to get "double" results 
} 


int main() 
{ 
    int n=0; 
    cout<<" Please, enter an integer :"; 
    cin>> n; 
    cout<<fixed<<setprecision(2)<<f(n); //"setprecision" used to get only two digits after the point 

return 0; 
} 

非常感謝大家給了我的手,特別感謝到paxdiablo先生。

+0

你卡在哪一點?向我們展示你到目前爲止所嘗試的以及你得到的錯誤。 – Oguk 2014-11-21 00:21:44

+0

獲得「double f1(double x)」部分。並使用圓括號得到正確的答案 – mhs 2014-11-21 01:17:15

+0

你輸出'輸入一個整數',但你把它讀成一個double。此外,你的函數應該把一個整數作爲它的輸入參數(它也使比較爲零安全,儘管它應該在特殊情況下用於雙精度)。否則,除了一些語法錯誤(查閱書中的if和函數),您幾乎可以解決問題。只輸出結果。 – Oguk 2014-11-21 01:47:39

回答

0

這聽起來像一份工作......遞歸人!

只需定義一個遞歸函數,當n爲零時返回3,或者調用本身的簡化問題。

僞代碼會是這樣的

def f(x): 
    if x == 0: 
     return 3 
    return 3/4 * f(n-1) + 4 

您可以使用std::cin >> dv獲得來自用戶的價值和功能(重新編碼在C++中)來完成繁重的工作。然後std::cout << result輸出結果。只記得使用雙打而不是整數,包括常量如3.0

0

您必須定義遞歸函數f,然後從用戶讀取輸入,然後將函數應用到您讀取的輸入(可能是一個整數?)並打印輸出。

相關問題