递归--求n!的阶乘结果

递归的基本概念
? 一个函数调用其自身,就是递归
? 求n!的递归函数

通过函数递归的方式实现求函数的阶乘。

Python代码如下:

#求阶乘
def Factorial(n):
    if (n == 1):
        return 1
    else:
      return  n * Factorial(n-1)

def main():
    n = int(input("请输入需要计算的阶乘数值:"))
    rtn =  Factorial(n)
    print("数值%d阶乘的计算结果为:%d" %(n,rtn))

if __name__ == "__main__":
    main()

原文地址:https://www.cnblogs.com/an-wl/p/12299176.html

时间: 2024-11-08 19:43:28

递归--求n!的阶乘结果的相关文章

c语言用递归求:10的阶乘、100+99+98...+3+2+1的值。

#include <stdio.h> #include <string.h> void main(){ int myfun(int in); int a =myfun(10); printf("%d\n", a); } int myfun(int in){ if (in > 1) //将下面的*换成+,就可以求100+99+98...+3+2+1的值呢. return in * myfun(in-1); else return 1; } 原文地址:http

Java 1:利用递归、非递归求n的阶乘

我们都知道n!=123.......(n-1)n;并且当n=0或n=1时n!=1,所以从公式可以将计算条件分为2部分:1.(n==0||n==1) ,n!=12.(n>1) ,n!=(n-1)!*n代码实现如下: public class Practice0514{ public static long factorial1(int n){//递归计算n的阶乘 if(n==0||n==1){ return 1; } else{ return factorial1(n-1)*n; } } publ

C语言习题【4】递归和非递归求n的阶乘

#include<stdio.h> #include<math.h> int main() { int n; int sum = 1; scanf("%d", &n); for (int i = 1; i <= n; i++) { sum *= i; } printf("%d", sum); return 0; } //非递归 #include<stdio.h> int floor(int n) { if (n ==

利用递归求阶乘

1 package com.d; 2 3 import java.util.Scanner; 4 5 public class Digui { 6 7 public static void main(String[] args) { 8 Digui d = new Digui(); 9 10 System.out.println("请输入一个整数"); 11 Scanner scan = new Scanner(System.in); 12 int a = scan.nextInt()

[Lua学习]递归求阶乘

1 --递归求阶乘 2 function func(n) 3 if n ~= 1 then 4 return n * func(n - 1) 5 else 6 return 1 7 end 8 end 9 10 print("输入整数:") 11 a = io.read("*number") 12 print(a .. "! -> " .. func(a)) ps:函数内也可以用(a and b) or c 这种形式的语句替代(未亲测).

比较喜欢的一种求阶乘的方法:用递归求阶乘

/** * 求n的阶乘 *细细品味,回味无穷 * @param num */ //要点:用递归,得给方法的一个结束条件,此题递归结束条件就是num==1 public static int getFactorial(int num){ return num==1 ? 1 : num*getFactorial(num-1); }

递归和非递归分别实现求n的阶乘

思路:举例求6的阶乘,6*5*4*3*2*1.可以将5开始看成另一个整型变量n,用一个循环每次将n的值减少1,.而递归也是如此,每次调用函数的时候将变量减一就可以. 方法一:非递归 1 //非递归: 2 #include<stdio.h> 3 int main() 4 { 5 int num = 1; 6 printf("请输入数字:\n"); 7 scanf("%d",&num); 8 int n = num - 1; 9 while (n &

递归求阶乘和

6-2 递归求阶乘和 (10 分) 本题要求实现一个计算非负整数阶乘的简单函数,并利用该函数求 1!+2!+3!+...+n! 的值. 函数接口定义: double fact( int n ); double factsum( int n ); 函数fact应返回n的阶乘,建议用递归实现.函数factsum应返回 1!+2!+...+n! 的值.题目保证输入输出在双精度范围内. 裁判测试程序样例: include <stdio.h> double fact( int n ); double f

Java50道经典习题-程序22 递归求阶乘

题目:利用递归方法求5!.分析:递归公式:n*factorial(n-1); 1 public class Prog22 { 2 public static void main(String[] args) { 3 System.out.println(factorial(5)); 4 } 5 //递归求阶乘 6 public static long factorial(int n) { 7 if(n==0||n==1) { 8 return 1L; 9 } 10 return n*factor