中石油 【递归】普通递归关系

问题 B: 【递归】普通递归关系

时间限制: 1 Sec  内存限制: 128 MB
提交: 24  解决: 24
[提交][状态][讨论版]

题目描述

考虑以下定义在非负整数n上的递归关系: 




其中a、b是满足以下两个条件的常数: 




给定f0, f1, a, b和 n,请你写一个程序计算F(n),可以假定F(n)是绝对值不超过109的整数(四舍五入)。

输入

输入文件一行依次给出5个数,f0 ,f1,a,b和n,f0,f1是绝对值不超过109 ,n是非负整数,不超过109。另外,a、b是满足上述条件的实数,且|a|,|b|≤106 。

输出

一行,F(n)的值

样例输入

0 1 1 1 20

样例输出

6765

代码:

#include <iostream>
#include <cstdio>

using namespace std;

double f0,f1;
int n;
double a,b;

long int f(int n){
    if(n==0){
        return (long int)f0;
    }
    if(n==1){
        return (long int)f1;
    }else{
        return (long int)(a*f(n-1)+b*f(n-2));
    }
}

int main()
{
    cin>>f0>>f1>>a>>b>>n;
    printf("%ld",f(n));
    return 0;
}
View Code
 
原文地址:https://www.cnblogs.com/TWS-YIFEI/p/5658102.html