您的位置:首页 > 其它

第12周项目3 用递归方法求解(2)

2014-11-14 18:32 225 查看
问题描述:

(2)写出求 1*3*...*n 的递归式,并编写出递归函数求解。

代码:

/*
 *copyright (c) 2014,烟台大学计算机学院
 *all rights reserved.
 *文 件 名 : 递归解决问题系列.cpp
 *作    者 :张   鹏
 *完成日期 :2014年11月14号
 *版 本 号 :v1.1
 *
 *问题描述 :写出求 1*3*...*n 的递归式,并编写出递归函数求解。
 *输入描述 :一个正整数且为奇数。
 *程序输出 :递归式和结果。
 */
#include <iostream>                          //预处理指令。.
using namespace std;                         //使用C++的命名空间 std。
long fac(int );                              //声明自定义函数,用于求n的阶乘。
int main()
{
    int n;                                   //声明一个变量n位整型
    cout<<"                           欢迎使用递归式计算器"<<'\n';
    cout<<"请输入一个奇数:" ;             //输出汉字,使得界面更友好。
    while (cin>>n)
    {
        while (n<=0||n%2==0)
        {
            cout<<"亲输入有误请重新输入:";
            cin>>n;
        }
        cout<<"该数递归式等于:"<<fac(n)<<'\n';
        cout<<"请按ctrl+z退出"<<'\n';
        cout<<"继续使用,请输入数:";
    }
    cout<<"非常感谢您的使用!祝您生活愉快,工作顺利。";
    return 0;
}
long fac(int i)                               //自定义函数fac开始。
{
    long sum=1;                              //定义一个变量sum位整型并赋初值为1,sum代办阶乘。
    if  (i>0)
    {
        sum=i*fac(i-2);
    }
    else return 1;
    return sum;                               //返回阶乘的值。
}


运行结果:






知识点与学习心得:

要注意利用递归时候何时返回以及返回到的地方。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: