南华大学ACM个人连续第一场 E.Function

Problem E: Function

Time Limit: 1 Sec   Memory Limit: 32 MB
Submit: 20   Solved: 16
[ Submit][ Status][ Web Board]

Description

Define a function f(n)=(f(n-1)+1)/f(n-2). You already got f(1) and f(2). Now, give you a number m, please find the value of f(m). 

Input

There are several test cases. Each case contains three integers indicating f(1), f(2) and m ( 1 <= f(1), f(2), m <= 1000,000,000). 

Output

For each case, please output the value of f(m), rounded to 6 decimal places. 

Sample Input

1 1 3

Sample Output

2.0000
 
其实这个题目是有规律的,当你一直算下去的时候,不管你给f(1),f(2),赋值为什么,每5个将循环一次。故这样就可以递归了,不会发生栈溢出,也不会超时,还要注意的就是变量的类型。
下面是我的代码:

#include<stdio.h>

double a,b;
long m;

double Re(int c)
{
    if(c==1)
        return a;
    else if(c==2)
        return b;
    else if(c==0)
    {
        c=5;
        return  (double)(Re(c-1)+1)/Re(c-2);
    }
    else
        return  (double)(Re(c-1)+1)/Re(c-2);


}
int main(void)
{
    while(scanf("%lf%lf%d",&a,&b,&m)==3)
    {
       double Result;
       Result=Re(m%5);
       printf("%.4lf\n",Result);
    }
    return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值