n的阶乘的递归算法
① 如何使用用递归求n的阶乘
#include"stdio.h"
doublejc(intn)
{
if(n>1)
returnjc(n-1)*n;
else
return1;
}
intmain()
{
intn;
scanf("%d",&n);
printf("%.0lf",jc(n));
}
② 用递归求N的阶层
#include <stdio.h>
void main()
{
float f(int);//函数原型
int n;
float sum;
printf("你想求谁(整数)的阶乘:");
scanf("%d",&n);
sum=f(n);
printf("%d!=%.2f/n",n,sum);
}
float f(int n)
{
float sum;
if(n<0) printf("data error./n");
else if(n==0||n==1) sum=1;//加n==0是因为0也可以求阶乘,在调用函数时可以给实参n赋值为0
else sum=f(n-1)*n;
return sum;
递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。
一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数).
递归过程一般通过函数或子过程来实现。递归方法:在函数或子过程的内部,直接或者间接地调用自己的算法。
递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。
递归算法解决问题的特点:
(1) 递归就是在过程或函数里调用自身。
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。
③ 用递归方法写出计算n的阶乘的函数,调用该函数计算0=1,2.....10时各阶乘的值
#include "stdio.h"
int prime(int n)
{
if(n>1)
return n*prime(n-1);
else
return 1;
}
int main()
{
int o;
for(o=1;o<=10;o++)
printf("%d!=%d ",o,prime(o));
}
④ c语言怎么用递归调用函数的方法求n的阶乘
1、打开VC6.0软件,新建一个C语言的项目:
⑤ 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,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);
}
(5)n的阶乘的递归算法扩展阅读:
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语言算n的阶乘的递归算法
思路:递归求阶乘函数,如果输入的参数等于1则返回1,否则返回n乘以该函数下次递归。
参考代码:
#include<stdio.h>
intfun(intn)
{
if(n==1||n==0)return1;//如果参数是0或者1返回1
returnn*fun(n-1);//否则返回n和下次递归的积
}
intmain()
{
intn;
scanf("%d",&n);
printf("%d ",fun(n));
return0;
}
/*
5
120
*/
⑦ n的阶乘公式
n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
亦即n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
资料来源:阶乘_网络
⑧ 递归求n的阶乘
思路如下:对n>1的情况,n的阶乘等于(n-1)的阶乘乘以n。如果n=1,n的阶乘也等于1。