此题能否用递归来解决。

来源:5-14 综合练习

蓝莓_咖喱

2016-03-04 18:39

#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回答

  • 七九九
    2016-03-05 23:48:02
    已采纳

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

    递归的使用条件是,一个函数本身是一个递归函数,比如斐波那契数列。递归的使用说白了,仅仅是将一个递归函数用计算机语言表示出来。你如果能够找到一个问题中的递归的规律,那么写出它的初始值,表达式,然后翻译成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).......的规律,就可以使用递归。


    蓝莓_咖喱

    非常感谢!

    2016-03-08 14:30:53

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926212 学习 · 20797 问题

查看课程

相似问题