@SuHongjun
2020-04-23T03:38:41.000000Z
字数 1694
阅读 291
C语言 2020春季学期
#include "stdio.h"int pf(int x){return x*x;}int add(int x, int y){return pf(x) + pf(y); //调用函数 pf()}main(){int a=3,b=5,c=0;c = add(a,b); //直接调用add() ,间接调用了函数 pf()printf("c=%d\n", c);}
递归调用就是一个函数自己调用自己
输入n, 计算并输出 n!, 要求用用户自定义的递归函数实现
#include "stdio.h"long jc(int n) //非递归函数:计算 n!{long x=1,i;for(i=1; i<=n; i++)x *= i;return x;}long jc2(int n) //递归函数:计算 n!{if(n==1) //递归结束的条件return n;elsereturn n * jc2(n-1); //调用自己 n! = n * (n-1)!}main(){int n;printf("n=");scanf("%d", &n);printf("%d! = %d\n",n, jc(n)); //调用非递归函数printf("%d! = %d\n",n, jc2(n)); //调用递归函数}
斐波那契数列:1,1,2,3,5,8,13,21,34,55,89,。。。。。。
非递归方式:
#include "stdio.h"int fbnq_i(int i_1, int i_2) //斐波那契数列的第 i 项值{return i_1 + i_2;}main() //输出斐波那契数列: 非递归方式{int end = 1000, a=1, b=1,t;printf("斐波那契数列:\n");printf("%d\t",a);while(b <= end){printf("%d\t",b);t = a;a = b;b = fbnq_i(t,b); //调用函数fbnq_i( ) 得到数列第i项值}printf("\n");}
斐波那契数列输出的递归实现:
#include "stdio.h"int fbnq_dg(int i) //用递归方式,返回斐波那契数列的第 i 项值{if(i<=1) //递归结束的条件return 1;elsereturn fbnq_dg(i-1) + fbnq_dg(i-2); //递归计算:斐波那契数列第i项 = 第i-1项 + 第i-2项}main() //输出斐波那契数列,采用递归方式,main()的代码更简洁易读{int end = 1000,i=0;printf("斐波那契数列:\n");while(fbnq_dg(i) < end){printf("%d\t",fbnq_dg(i)); //调用函数fbnq_dg( ) 得到数列第i项值i++;}printf("\n");}
斐波那契数列输出的递归实现2:
#include "stdio.h"int fbnq_i(int i) //计算并返回斐波那契数列中第 i 项的值{if(i<=2)return 1;elsereturn fbnq_i(i-1) + fbnq_i(i-2);}main(){int i=1, end=1000;printf("斐波那契数列:\n");while(1){if(fbnq_i(i)<=end)printf("%d\t", fbnq_i(i));elsebreak;i++;}printf("\n");}
#include "stdio.h"float lrd_n(int n,float x) //递归计算n阶勒让德多项式的第 i 项的值{float result;if(n==0)return 1;else if(n==1)return x;else{result = 1.0*((2*n-1)*x*lrd_n(n-1) - (n-1)*lrd_n(n-2))/n;return result;}}main(){//作业:请补充完善}