问题及代码:
/*
* Copyright (c) 2014, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp
* 作 者:何小乐
* 完成日期:2014年 11 月 17 日
* 版 本 号:v1.0
*
* 问题描述:求出1*3*5*……n
* 输入描述:一个奇数a
* 程序输出:输出a之内所有奇数乘积
*/
#include <iostream>
using namespace std;
long fac(int);
int main()
{
int a;
cout<<"请输入一个奇数:";
cin>>a;
if(a%2==0) //因为题目所要求是求一个奇数的乘积。
cout<<"您的输入有误,请输入一个奇数。";
else
cout<<fac(a)<<endl;
return 0;
}
long fac(int n)
{
int x;
if(n==1)
x=1;
else
x=n*fac(n-2); //输入数为奇数的情况,一直减2减到1为止,即可求出a
return x;
}
运行结果:
学习小结:
和上一个项目大同小异,想了一会儿就构造出了递归形式:n*(n-2),结束条件为n==1。