运用函数递归求n!

/*
* 程序的版权和版本声明部分:
* Copyright (c) 2013.烟台大学计算机学院。
* All rights reserved.
* 作    者:张凯
* 完成日期:2013 年 11月 22 日
* 版 本 号:v1.0
* 输入描述:输入一个整数
* 问题描述:上机实践
* 程序输出:这个数的阶乘
* 问题分析:1*2*3*4....*n
* 算法设计:函数的递归调用
*/
#include <iostream>

using namespace std;

long f(int t);

int main()
{
    int n;
    cout<<"请输入一个整数:"<<endl;
    cin>>n;
    cout<<"1*2*3....*"<<n<<"="<<f(n)<<endl;
    return 0;

}
long f(int a)
{
    int sum;
    if(a==1)
    {
        return 1;
    }
    else
    sum=a*f(a-1);
    return sum;
}

运行  结果(如下图)

                                     

心得体会:先把简单的做熟悉。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用递归函数解1!+2!+...+n!的和。 具体实现方法如下: 1. 定义一个函数factorial(n),用于计算n的阶乘。 2. 定义一个函数sum_factorial(n),用于计算1!+2!+...+n!的和。 3. 在sum_factorial(n)函数,使用循环语句遍历1到n,依次计算每个数的阶乘,并将结果累加到一个变量。 4. 最后返回累加结果即可。 代码实现如下: def factorial(n): if n == 1: return 1 else: return n * factorial(n-1) def sum_factorial(n): sum = for i in range(1, n+1): sum += factorial(i) return sum 例如,当n=5时,调用sum_factorial(5)函数,返回的结果为1!+2!+3!+4!+5!=153。 注意:当n比较大时,递归函数可能会导致栈溢出,可以考虑使用循环或尾递归优化来避免这种情况。 ### 回答2: 要运用函数调用方法1! 2! ...... n!,我们可以先定义一个函数来计算阶乘,再在主函数利用循环调用该函数来计算1!到n!。 首先,我们定义一个函数factorial来计算一个数的阶乘: ```python def factorial(n): result = 1 for i in range(1, n+1): result *= i return result ``` 在上述代码,我们使用了for循环来对1到n进行乘法运算,最后返回结果。 接下来,在主函数,我们可以使用for循环来分别计算1!到n!: ```python n = int(input("请输入一个正整数n:")) for i in range(1, n+1): f = factorial(i) print("%d! = %d" % (i, f)) ``` 在上述代码,我们首先输入了一个正整数n,然后使用for循环来分别计算1!到n!,并在每次循环调用factorial函数来计算阶乘。最后,我们使用了print函数来输出结果。 整个程序的完整代码如下: ```python def factorial(n): result = 1 for i in range(1, n+1): result *= i return result n = int(input("请输入一个正整数n:")) for i in range(1, n+1): f = factorial(i) print("%d! = %d" % (i, f)) ``` 总之,我们可以利用函数调用方法来计算1!到n!,并且使程序的可读性和可维护性更高。 ### 回答3: 题目要我们使用函数调用方法1! 2! ...... n!。那么我们可以先写一个函数,用来计算阶乘。函数的定义如下: ```C++ long long factorial(int n){ long long result = 1; for(int i = 1; i <= n; i++){ result *= i; } return result; } ``` 这个函数接受一个整数n,返回1到n的阶乘的乘积。接下来,我们用另一个函数调用这个阶乘函数,计算1!到n!的和。函数定义如下: ```C++ long long sumOfFactorials(int n){ long long sum = 0; for(int i = 1; i <= n; i++){ sum += factorial(i); } return sum; } ``` 这个函数接受一个整数n,返回1!到n!的和。在这个函数,我们使用了阶乘函数factorial来计算每个数的阶乘,并将计算结果累加到总和。 最后,我们在主函数调用sumOfFactorials函数,并传入n的值,即可得到1!到n!的和。代码如下: ```C++ int main(){ int n = 5; long long sum = sumOfFactorials(n); printf("1! + 2! + ... + %d! = %lld\n", n, sum); return 0; } ``` 这段代码,我们传入n的值为5,计算1!到5!的和,并输出结果。如果想要计算其他n的值的结果,只需要将n的值改为需要计算的数即可。 总的来说,使用函数调用方法1! 2! ...... n!需要先写一个阶乘函数,然后再写一个函数来调用阶乘函数、计算1!到n!的和。通过这种方法,我们可以把程序分成多个部分,提高代码的可读性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值