DAY 004--递归求某数的阶乘

004-- 用递归求解某数的阶乘

n的阶乘:n(n-1)(n-2)(n-3)****1

流程分析:                                                                            

1、输入某个数字n,计算该数字的阶乘:n!

2、递归求阶乘函数,参数为n:

  2.1、判断数字是否等于1,如果等于1 ,函数返回1

  2.2、如果函数不返回1,则函数返回n*fun(n-1),以此递归

代码分析:                                                                            

 

def factorial(n):
    if n==1:
        return 1
    return n*factorial(n-1)

def main():
    n=input("请输入数字的阶乘:")
    if n.isdigit():
        n=int(n)
        print("%d的阶乘为%d"%(n,factorial(n)))
    else:
        print("输入的值非数字!")

if __name__=="__main__":
    main()

题目反思 :                                                                            

1、这算是我第一次做递归题把,虽然题目很简单,但是这个方法并不是我自己想到的,而是百度搜索的,很羞耻。

2、递归其实就是函数满足某个条件后,运行本身函数,直到不满足条件为止(个人理解,不对还望改正)

新学知识点:                                                                          

1、阶乘的函数编写,运用递归的思维

2、初步了解递归的用法

 

Mark on 2018.04.07

原文地址:https://www.cnblogs.com/JunSheep/p/8735335.html

时间: 2024-10-10 23:16:51

DAY 004--递归求某数的阶乘的相关文章

249 递归:概念,利用递归求1~n的阶乘,利用递归求斐波那契数列,利用递归遍历数据

6.1什么是递归 递归:如果一个函数在内部可以调用其本身,那么这个函数就是递归函数. 简单理解: 函数内部自己调用自己, 这个函数就是递归函数 注意:递归函数的作用和循环效果一样,由于递归很容易发生"栈溢出"错误(stack overflow),所以必须要加退出条件return. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&g

例题:用函数递归求数字n 的阶乘

class Program { // 要理解递归,先要理解递归. (这只是一句玩笑话 ) // 递归,顾名思义就是递来归去,如此反复,直到不符合某个条件. 而函数递归意思也就是函数调用函数自己. 下面用代码来示例: public int jiecheng(int n) { // 用这个函数实现阶乘 , n表示阶乘的次数 if (n <= 1) return 1; else n= n *jiecheng (n - 1); return n; } static void Main(string[]

C语言用递归求斐波那契数,让你发现递归的缺陷和效率瓶颈

递归是一种强有力的技巧,但和其他技巧一样,它也可能被误用. 一般需要递归解决的问题有两个特点: 存在限制条件,当符合这个条件时递归便不再继续: 每次递归调用之后越来越接近这个限制条件. 递归使用最常见的一个例子就是求阶乘,具体描述和代码请看这里:C语言递归和迭代法求阶乘 但是,递归函数调用将涉及一些运行时开销--参数必须压到堆栈中,为局部变量分配内存空间(所有递归均如此,并非特指求阶乘这个例子),寄存器的值必须保存等.当递归函数的每次调用返回时,上述这些操作必须还原,恢复成原来的样子.所以, 基

利用递归求阶乘

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 这种形式的语句替代(未亲测).

递归的算法求1,1,2,3,5,8.......的第30位数是多少,然后求这些数的和.

递归的算法求1,1,2,3,5,8.......的第30位数是多少,然后求这些数的和. static void Main(string[] args) { //递归的算法求1,1,2,3,5,8.......的第30位数是多少,然后求这些数的和. int n = int.Parse(Console.ReadLine()); int Number = GetNumber(n); int NumerSUM = GetNumberSUM(n); Console.WriteLine(Number); C

递归求阶乘和

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

递归--求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,rt