c语言递归函数怎么写

1.c语言 函数递归调用的简单例子=#include <stdio.h>
/// 求阶乘函数
/// 递归思想
/// n! = n * (n-1) * (n-2) *。* 1
/// n! = n * [(n-1) * (n-2) *。* 1]
/// n! = n * (n-1)! 递归方程
/// 这是递归实现
unsigned Factorial(unsigned int n)
【c语言递归函数怎么写】{
if (n == 0) return 1; // 对于0的阶乘,当n=0时,递归返回
return n * Factorial(n-1); // 递归调用
}
void main()
{
int n = 3;
printf("3! = %d",Factorial(n));
}
2.如何使用C语言递归函数递归:函数下一次的参数是函数自身上一次的输出值 。(也就是说,函数的下一次取决于上一次的结果,自身依赖) 。
也正是因为如此,这样的函数必须有终止值(即递归必须有一个条件限定) 。否则就会进入死循环 。
“递归”分成“直接递归”、“简介递归” 。具体可以参考我的博客(点击, ,查看,有代码有具体示例解释) 。
给出一个求n!的C递归:
int Fun(int n)
{
if (n==0 || n==1) return 1;
return Fun(n-1)*n;
}
Sorry, 程序略有写错误,主函数请这样修改:
int main() { int x=0,n=0; printf("输入x:"); scanf("%d",&x); printf("输入n:"); scanf("%d",&n); double sum=0; for(int i=1;i<=n;i+=2) { sum+=Result(x,n); }printf("结果是:%lf",sum); system("pause"); }
3.c语言中的递归原发布者:zhoujiahaohao2
1.编写计算X的Y次幂的递归函数getpower(intx,int),并在主程序中实现输入输出 。#include"stdio.h"longgetpower(intx,inty){if(y==1)returnx;elsereturnx*getpower(x,y-1);}voidmain(){intnum,power;longanswer;printf("pleaseinputanumber:");scanf("%d",&num);printf("pleaseinputthenumber'spowerseries:");scanf("%d",&power);answer=getpower(num,power);printf("结果是:%ld\n",answer);}结果说明:输入61再输入5求得61的5次幂为844596301.2编写计算学生年龄的递归函数 。#includeintage(intn){intc;if(n==1)c=10;elsec=age(n-1)+2;returnc;}voidmain(){intn=5;printf("thefivestudent'sageis:%dyearsold\n",age(n));}结果说明:第五个学生的年龄为18岁 。3.编写递归函数实现Ackman函数 。#includeAcm(intm,intn){if(m==0)returnn+1;elseif(n==0)returnAcm(m-1,1);elsereturnAcm(m-1,Acm(m,n-1));}intmain(){printf("Acm(2,1)=%d\n",Acm(2,1));printf("Acm(3,2)=%d\n",Acm(3,2));return0;}结果说明:利用递归函数求得Acm(2,1)=5,Acm(3,2)=29.实验小结:
4.C语言 递归函数//方法一,不需将转换后的字符存储在字符数组中
#include
void change(int );
int main()
{
int n;
scanf("%d",&n);
change(n);
printf("\n");
return 0;
}
void change(int num)
{
if(num==0)return ;
change(num/10);
printf("%d",num%10);
}
//方法二,先将转换后的字符存储在字符数组中
#include
#define LEN 100
int m=0;
void change(int ,char *);
int main()
{
int n,i;
char a[LEN];
for(i=0;ia[i]='\0';
scanf("%d",&n);
change(n,a);
printf("%s",a);
printf("\n");
return 0;
}
void change(int num,char *s)
{
if(num==0)return ;
change(num/10,s);
s[m++]=(char)(num%10+'0');
}
5.讲一下c语言中递归函数的使用方法递归函数有三点要求:
1,递归的终止点,即递归函数的出口
2,不断的递归调用自身
3,递归函数主体内容,即递归函数需要做的事情
ps:3一般可以放在2的前面或者后面,一般1放最前面 。另外,2和3可以根据不同的需要合并,比如,有时候递归函数的主体就是返回调用下层函数所得到的结果 。
具体例子如下:
void fun(int n)
{
if(n<=0) return; //1 这是递归的终点,即出口