一道C语言的题目,递归法

Python015

一道C语言的题目,递归法,第1张

#include

#include

/*求n的

阶乘

递归

分母

部分

*

结束条件为:1的阶乘=1

*

递归时,一定要有结束条件

*/

int

factorial

(n)

{

if(n==1)

//递归结束条件,1的阶乘为1

return

1

else

return

n*factorial(n-1)

//n的阶乘为n乘以(n-1)!

}

int

main()

{

int

n,x

size_t

i

//i为

无符号整数

double

re=0

printf("input

n

and

x:")

scanf("%d%d",&n,&x)

//输入n和x的值

for(i=1i<=2*n-1i+=2)

{

/*pow函数求的是x的i次方,分母为

i的

阶乘。本部分可以优化,因为i的阶乘算出来了,所以i+2的阶乘就是i的阶乘*(i+1)*(i+2),不用重复来计算阶乘。自己可以试试*/

re

+=

pow(x,i)/factorial(i)

}

printf("\nn=%d\tx=%d\tresult=%f\n",n,x,re)//打印出

最后的结果

return

0

}

#include<stdio.h>

void swap(int *m,int *n){

int t

if(m <n){

t = n

n = m

m = t

}

}

int f(int m,int n){

if(m%n == 0)return n

else

return f(n,m%n)

}

int main(){

int p = 0,m = 0,n = 0

printf("请按照由大到小的顺序输入两个整数,用空格隔开:\n")

scanf("%d%d",&m,&n)

swap(m,n)

p = f(m,n)

printf("两个数的最大公约数是:%d\n",p)

return 0

}

1、首先打开vc6.0,新建一个vc项目。

2、添加头文件。

3、添加main主函数体。

4、定义a、b、t、r四个变量。

5、使用scanf给a、b变量赋值。

6、如果 a <b,交换a、b。

7、使用while不断求余。

8、使用printf打印最大公约数和最小公倍数。

10、运行程序,看看结果。