一道关于C++递归函数的题目,请教下

来源:百度知道 编辑:UC知道 时间:2024/05/14 01:44:57
下面程序的功能是计算f(x)的值,其中f(x)的表达式是:
f(x)=2(当x=0时) f(x-1)+5(当x>0时)
#include<iostream>
using namespace std;
int f(int x)
{
if(x<0) cout<<"参数错误!"<<endl;
else if(x==0) return 2;
else return f(x-1)+5;
}
void main ()
{
int a=30;
cout<<"结果为:"<<f(a)<<endl;
}
答案是:结果为:152,为什么呀?

f(29)+5
f(28)+5+5
f(0)+5+5+....+5(30个5)
f(0)=2
所以结果就是30*5+2=152

没错啊,因为你算一下就知道其实f(x)=f(0)+5*x,因此f(30)=f(0)+5*30=2+5*30=152.

这个递归相当于求一个等差数列最后一个元素的值。
而这个等差数列第一个值为2。你输入的a表示数列的项数。