java:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String a=sc.next(); int b=Integer.parseInt(a); System.out.print(factorial(b)); } public static int factorial(int a){ if(a==1){ return a; }else{ return factorial(a-1)*a; } } }
C:(main函数最好在最后面或者使用函数声明)
#include <stdio.h> long factorial(int a){ if(a==1){ return a; } else{ return factorial(a-1)*a; } } int main() { int a; scanf("%d",&a); printf("%d",factorial(a)); return 0; }
如何逐层进入,又是如何逐层退出的。
每一个递归函数都应该只进行有限次的递归调用,否则它就会进入死胡同,永远也不能退出了,这样的程序是没有意义的。
存在限制条件,当符合这个条件时递归便不再继续。对于 factorial(),当形参 n 等于 1 时,递归就结束了。每次递归调用之后越来越接近这个限制条件。对于 factorial(),每次递归调用的实参为 n - 1,这会使得形参 n 的值逐渐减小,越来越趋近于 1 。
标签:阶层,return,递归,factorial,int,算法,main,public From: https://www.cnblogs.com/lin-07/p/17319939.html