c语言怎么用递归调用函数的方法求n的阶乘
1、打开VC6.0软件,新建一个C语言的项目:
2、接下来编写主程序,首先定义用来求阶乘的递归函数以及主函数。在main函数里定义变量sum求和,调用递归函数fact(),并将返回值赋予sum,最后使用printf打印sum的结果,主程序就编写完了:
3、最后运行程序,观察输出的结果。以上就是C语言使用递归求阶乘的写法:
(1) 用递归的方式定义一个函数,用于求阶乘的值
// jiecheng.cpp : Defines the entry point for the console application.
//递归求函数的阶乘#include “stdafx.h“
//jiecheng 函数的计算范围不超过int的范围int jiecheng(int n)
{
if (n》1)
{return n*jiecheng(n-1);
}
else
return n;
} int main(int argc, char* argv)
{
int i; //用来计数
printf(“\n输入数字:\n“);
scanf(“%d“,&i);
printf(“\n%d的阶乘为:%d\n“,i,jiecheng(i));
return 0;
} 0!=1,注意(0的阶乘是存在的)
通过函数的递归调用计算阶乘
long power(int n)
{
long f; //声明一个变量f,以记录结果
if(n》1) f=power(n-1)*n; //如果还没有累乘到1,那么继续将n-1代入进行递归,这样就实现了逐步的由n向1累乘
else f=1; //当累乘到1时,结束递归
return(f);
}
用java递归算法求一个数字的阶乘
1、采用自顶向上的递归方法,代码如下:
import java.util.Scanner;
public class Test {
@SuppressWarnings(“resource“)
public static void main(String args) {
// 从控制台输入一个整数
Scanner in = new Scanner(System.in);
int b = in.nextInt();
// 声明一个Test对象,调用cal方法获得结果
Test test = new Test();
long a = test.cal(b);
System.out.println(a);
}
// 通过递归掉调用最终返回结果
public long cal(int number) {
// 如果数字为1,则直接返回
if (number == 1) {
return 1;
} else {// 否则递归求值
return number * cal(number – 1);
}
}
}
2、递归方法:
递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数).
3、特点:
(1) 递归就是在过程或函数里调用自身。
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。
c语言递归求阶乘
举例:用递归方法求n;
#include《stdio.h》
int main()
{
int n;
int y;
printf(“input a integer number:“);
scanf(“%d“,&n);
y=fac(n);
printf(“%d!=%d\n“,n,y);
return 0;
}
int fac(int n)
{
int f;
if(n《0)
printf(“n《0,data error!“);
else if(n==0||n==1)
f=1;
else
f=fac(n-1)*n;
return(f);
}
扩展资料:
return用法:
return返回一个数值的意思就是把return《表达式》后面表达式的值返回给调用他的函数。举个例子:
int sum(int i,int j)
{
return i+j;
printf(“这个语句不会被执行,因为该子函数执行到上面的return语句就无条件结束了“);
}
main()
{
int a=10,b=11,c;
c=sum(a,b);
printf(“%d“,c);
}
程序的输出为:
21
这个21从何而来呢main函数调用sum(a,b)函数时将a的值赋给i,b的值赋给j,上面说了return i+j;会计算i+j的值也就是结果等于21,并将21带回给调用它的函数,即c=sum(a,b);相当于c=21,这个21就是由sum(a,b)中的return反回来的。
C语言怎么用递归法求阶乘
1、首先打开vc6.0,新建一个vc项目。
2、接下来需要添加头文件。
3、添加main主函数。
4、定义一个用来求阶乘的函数。
5、在main函数定义int类型变量sum。
6、调用fact(),并将返回值赋予sum。
7、使用printf打印sum。
8、运行程序,看看结果。
c++递归函数求阶乘
return n == 1 ? 1 : n * factorial(n-1) ;//等号和赋值号乱了
C语言怎么用递归法求阶乘
n的阶乘,就是从1开始乘到n,即1*2*3*…*(n-1)*n。
即n!=1*2*3*…*(n-1)*n。
而(n-1)!=1*2*3*…*(n-1)。
所以可以得出,n!=(n-1)!
*
n。
由这个概念,可以得出递归求阶乘函数fact的算法:
1
如果传入参数为0或1,返回1;
2
对于任意的n,返回n*fact(n-1)。
代码如下:
int fact(int n)
{
if(n == 0 || n == 1) return 1;
return n*(fact(n-1));
}
用递归方法编写一个求阶乘的子函数,主函数调用该子函数,输入正整数n,求n!
#include 《stdio.h》
int step(int x){ //递归函数,返回阶乘结果
if (x》1) { //参数=1为出口,返回1
return x*step(x-1);//返回当前数与比当前数小一的数的阶乘的积
}
return 1;
}
int main(){
int n;
scanf (“%d“,&n);
printf (“%d“,step(n));
return 0;
}
求阶乘n!的递归算法
思路:递归求阶乘函数,如果输入的参数等于1则返回1,否则返回n乘以该函数下次递归。
参考代码:
#include《stdio.h》
int fun(int n)
{
if(n==1||n==0) return 1;//如果参数是0或者1返回1
return n*fun(n-1);//否则返回n和下次递归的积
}
int main()
{
int n;
scanf(“%d“,&n);
printf(“%d\n“,fun(n));
return 0;
}
/*
5
120
*/
【递归算法的原理】
递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写
递归能使程序变得简洁和清晰。