c语言递归函数的n次幂 c语言递归求幂

C语言 利用递归函数求X的n次方程序填空

#include "stdio.h"

创新互联长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为洋县企业提供专业的成都网站设计、网站制作,洋县网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

#include "math.h"

main()

{

int a, b;

long power(), t;

printf("输入两个整数:");

scanf("%d, %d", a, b);

t = power(a, b);

printf("%d ^ %d = %1d", a, b, t);

}

long power(x ,n)

int x, n;

{

long y;

if(n0)

y = x * power(x, n-1);

else y = 1;

return y;

}

C语言 用递归方法求X的n次方

#includestdio.h

int power(int x,int n)

{

if(n==0)

return 1;

elseif(n%2==1)

return x*power(x,n-1);

else{

int y=power(x,n/2);

return y*y;

}

}

int main()

{

int a,b,c;

printf("enter x and n:");

setvbuf(stdout,NULL,_IONBF,0);

scanf("%d%d",a,b);

c=power(a,b);

printf("结果为%d",c);

return 0;

}

扩展资料

#includestdio.h

double power(double x,int n);

main()

{

double x;

int n;

printf("Input x,n:");

scanf("%lf,%d",x,n);

printf("%.2lf",power(x,n));

}

double power(double x,int n)

{

double a=1.0;

int i;

for(i=1;i=n;i++)

a*=x;

return a;

}

参考资料:百度百科 - 递归调用

C语言。用递归函数 做n的m次方。。拜托。谢谢。

首先纠正一下,C语言不能重载同名函数,C++也不能仅以返回值的区别来重载。所以可以统一使用double recursive_pow_pos(int n, int m)。

我帮你做了个示范,应该很容易看懂。

(注意,0^0=1,这是规定,也是合理的)

#includestdio.h

double recursive_pow_pos(int n, int m)

{

register double t;

if (m == 0)

return 1.0;

if (m 0)

return 1.0 / recursive_pow_pos(n, -m);

t = recursive_pow_pos(n, m / 2);

if (m % 2)

return t * t * (double)n;

else

return t * t;

}

int main(void)

{

int n, m;

double result;

double recursive_pow_pos(int, int);

printf("Input n-");

scanf("%d", n);

printf("Input m-");

scanf("%d", m);

result = recursive_pow_pos(n, m);

printf("%d ^ %d = %f\n", n, m, result);

return 0;

}

请编写一个递归函数计算X的n次幂,并在main中调用

#include

stdio.h

//

递归函数计算x的n次幂,这里都是用的int,因此计算范围只能限制在int类型的取值范围下

//

如果需要计算更大的值,需要将类型修改为float

int

mypow(int

x,

int

n)

{

if

(n

=

0)

return

1;

else

return

x

*

mypow(x,

n

-

1);

}

int

main()

{

printf("2^32

=

%d\n",

mypow(2,

10));

//

计算2的10次方

return

0;

}

请教一道c语言题,利用递归函数计算x的n次幂。

#includestdio.h

int Xn(int x,int n)//x的n次幂(n=0)

{

if(n=0)return 1;

else if(n=1) return x;

else return(Xn(x,n-1));

}

void main()

{

int a,b,xn;

scanf("%d %d",a,b);

xn=Xn(a,b);//a的b次幂

printf("The result is:%d",xn);

}

如何用c语言中的函数递归调用算法实现n阶矩阵的n次幂的求解?

/*用c语言中的函数递归调用算法实现n阶矩阵的n次幂*/

#include stdio.h

#include stdlib.h

#include time.h

#include string.h

//创建矩阵,矩阵用一维数组存储

double *matCreate(unsigned int m, unsigned int n)

{

double *p = (double *)malloc(sizeof(double) * m * n);

if (p == NULL) printf("创建矩阵失败!\n");

return p;

}

//输入矩阵元素

void matInput(double *a, unsigned int m, unsigned int n)

{

for (int i = 0; i  m; ++i)

{

for (int j = 0; j  n; ++j)

{

scanf("%f ", a[i * n + j]);

}

}

return;

}

//随机产生矩阵元素,均匀分布于[from to]

void matInitRand(double *a, unsigned int m, unsigned int n, double from, double to)

{

if (a == NULL || m = 0 || n = 0) return;

double x;

srand(time(NULL));

for (int i = 0; i  m; ++i)

{

for (int j = 0; j  n; ++j)

{

x = (1.0 * rand() / RAND_MAX) * (to - from) + from;

a[i * n + j] = x;

}

}

return;

}

//转置

void matTranspose(double *a, double *b, unsigned int m, unsigned int n)

{

for (int i = 0; i  m; ++i)

{

for (int j = 0; j  n; ++j)

{

b[j*n +i]=a[i * n + j] ;

}

}

}

//输出矩阵

void matPrint(double *a, unsigned int m, unsigned int n)

{

for (int i = 0; i  m; ++i)

{

for (int j = 0; j  n; ++j)

{

printf("%8.4f ", a[i * n + j]);

}

putchar('\n');

}

return;

}

//矩阵乘法c=a*b

void matMul(double *a,  double *b, double *c, unsigned int m, unsigned  int n, unsigned int k)

{

if (a == NULL || b == NULL || c == NULL || m = 0 || n = 0 || k = 0)    return;

double x = 0.0f;

for (int i = 0; i  m; ++i)

{

for (int u = 0; u  k; ++u)

{

x = 0.0f;

for (int j = 0; j  n; ++j)

{

x += a[i * n + j] * b[j * k + u];

}

c[i * k + u] = x;

}

}

return;

}

//b=a^n, a:m*m阶矩阵

void matFac(double *a, double *b, unsigned int n, unsigned int m)

{

double *c = (double *)malloc(sizeof(double) * m * m); //保存临时结果

if (n  1)

{

matFac(a, c, n - 1, m);

matMul(a, c, b, m, m, m);

}

else

memcpy(b, a, sizeof(double)*m * m);

// printf("%d:\n",n);

// matPrint(b, m,m);

free(c);                                    //回收内存

return ;

}

#define M 3

#define N 4

#define K N

int main(int argc, char const *argv[])

{

double *A, *B, *B1,*BT, *C;

A = matCreate(M, N);

B = matCreate(N, K);

B1 = matCreate(N, K);

BT = matCreate(K,N);

C = matCreate(M, K);

if (!A || !B || !B1 || !BT || !C) return -1;

matInitRand(A, M, N, 0.0f, 1.0f);

printf("A=\n");

matPrint(A, M, N);

matInitRand(B, N, K, 0.0f, 1.0f);

printf("B=\n");

matPrint(B, N, K);

matTranspose(B,BT,N,K);

printf("B'=\n");

matPrint(BT, K,N);

matMul(A, B, C, M, N, K);

printf("C=A*B\n");

matPrint(C, M, N);

matFac(B, B1, 4, N);

printf("B^4\n");

matPrint(B1, N, K);

return 0;

}


新闻标题:c语言递归函数的n次幂 c语言递归求幂
链接地址:http://hbruida.cn/article/hhdgoj.html