为了账号安全,请及时绑定邮箱和手机立即绑定

此题能否用递归来解决。

#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;

}

以上代码也可以实现计算打车总费用,不过对于这样的代码不知道有没有什么问题。

同时当在23点之后和五点之前,3公里内的费用该怎么计算。

请高手帮忙解决!谢谢!

正在回答

1 回答

代码你可以看看同学代码,有些代码写的很好,自己研究一下就行了。

递归的使用条件是,一个函数本身是一个递归函数,比如斐波那契数列。递归的使用说白了,仅仅是将一个递归函数用计算机语言表示出来。你如果能够找到一个问题中的递归的规律,那么写出它的初始值,表达式,然后翻译成C代码。最重要的是你需要发现数学规律。翻译只是个简单活。

F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)

这是斐波那契数列的表达式。你把n的取值范围作为多重if语句的条件,返回值是函数表达,就能写出来。

反正只要你能找到形如   F(n)=F(n+1)..... 或者F(n)=F(n-1).......的规律,就可以使用递归。


1 回复 有任何疑惑可以回复我~
#1

蓝莓_咖喱 提问者

非常感谢!
2016-03-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

此题能否用递归来解决。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信