第三章课后习题(3)

例3-13

题目描述:用递归的方法编写函数求Fibonacci级数,公式为

F(n)=F(n-1)+F(n-2)(n>2),F1=F2=1

观察函数调用过程。

设计思路:

1.设计一个Fibonacci函数,包括两个整数为形参,重复调用该函数,在调用时对n进行减一操作,当n=2时结束循环。

2.输入n值,调用函数。

3.输出结果。

流程图:

 

 

 代码实现:

#include<iostream>
using namespace std;
int Fibonacci(int n)
{
    if (n == 1 || n == 2)
    {
        return 1;
    }
    else
        return Fibonacci(n - 1) + Fibonacci(n - 2);
    return 0;
}
int main()
{
    int sum = 0;
    int n;
    cin >> n;
    int s = Fibonacci(n);
    cout << s;
    return 0;
}

 

例3-14

题目描述:用递归的方法编写函数求n阶勒让德多项式的值,在主程序中实现输入输出。递归公式已给出。

设计思路:

1.设计一个函数p,包括两个形参x和n,当n=0时p(x)=1,当n=1时p(x)=x,当x>1时p(x)=;

2.输入x与n的值。

3.输出结果。

流程图:

 代码实现:

 

#include<iostream>
using namespace std;
int p(int x, int n)
{
    if (n ==0)
    {
        return 1;
    }
    else if (n == 1)
    {
        return x;
    }
    else
    {
        return ((2 * n - 1) * x * p(x, n-1) - (n - 1) * p(x, n - 2)) / n;
    }
    return 0;
}
int main()
{
    int x, n;
    cin >> x >> n;
    cout<<p(x, n);
    return 0;
}

 例3-15

题目描述:编写递归函数getPower计算x的y次方,在同一个程序中针对整形和实型实现两个重载的函数

设计思路:

1.编写两个形参类型不同的函数,分别计算整形和实型是的结果。

2.输入x与y的值。

3.输出结果

流程图:

 代码实现:

#include<iostream>
using namespace std;
int getPower(int x, int y)
{
    if (y < 0)
        return 0;
    else
        return getPower(x, y - 1);
}
double getPower(double x, double y)
{
    if (y < 0)
        return 0;
    else
        return getPower(x, y - 1);
}
int main()
{
    int x, y;
    cin >> x >> y;
    int a, b;
    cin >> a >> b;
    cout<<getPower(x, y);
    cout<<getPower(a, b);
    return 0;
}

 

posted on 2023-04-25 22:36  石铁生  阅读(61)  评论(0)    收藏  举报