此題能否用遞歸來解決。
#include <stdio.h>
int Time;
double price=2.3;
double charge(n,Time)
{
?if(Time<=23&&Time>5)
? {
? ? if(n<=3)
? ? {
? ? ? ? return 13;
? ? }
? ? else
? ? {
? ? ? ? return charge((n-1),Time)+price;
? ? }
? }
?else
? ? {
? ? ?if(n<=3)
? ? ?{
? ? ? ? ?return 13;
? ? ?}
? ? ?else{
? ? ? ? ?return charge((n-1),Time)+1.2*price;
? ? ?}?
? ? }
}
int main()
{
? ? double price1=charge(12,9);
? ? double price2=charge(12,18);
? ? printf("%.2f\n",++price1 + ++price2);
? ? return 0;
}
以上代碼也可以實現(xiàn)計算打車總費用,不過對于這樣的代碼不知道有沒有什么問題。
同時當在23點之后和五點之前,3公里內(nèi)的費用該怎么計算。
請高手幫忙解決!謝謝!
2016-03-05
代碼你可以看看同學代碼,有些代碼寫的很好,自己研究一下就行了。
遞歸的使用條件是,一個函數(shù)本身是一個遞歸函數(shù),比如斐波那契數(shù)列。遞歸的使用說白了,僅僅是將一個遞歸函數(shù)用計算機語言表示出來。你如果能夠找到一個問題中的遞歸的規(guī)律,那么寫出它的初始值,表達式,然后翻譯成C代碼。最重要的是你需要發(fā)現(xiàn)數(shù)學規(guī)律。翻譯只是個簡單活。
F(0)=0,F(xiàn)(1)=1,F(xiàn)(n)=F(n-1)+F(n-2)(n≥2,n∈N*)
這是斐波那契數(shù)列的表達式。你把n的取值范圍作為多重if語句的條件,返回值是函數(shù)表達,就能寫出來。
反正只要你能找到形如 ? F(n)=F(n+1)..... 或者F(n)=F(n-1).......的規(guī)律,就可以使用遞歸。