求助一个取幂程序
# include< stdio.h >
# include< math.h >
int main()
{
int a;
int b;
int Pow(int m, int n );
while( 1 )
{
printf( "Please input 2 numbers:\n" );
scanf( "%d, %d", &a, &b );
getchar();
printf( "The power is %d.\n", Pow( a, b ) );
getchar();
}
}
int IsEven( int Y ) //判断奇偶
{
if( ( Y % 2 ) == 0 )
return 1;
else
return 0;
}
int
Pow(int X, int N ) //递归求幂运算
{
if( N == 0 )
{
return 1;
}
if( N == 1 )
{
return X;
}
if( IsEven( N ) )
{
return Pow( (X * X), (N / 2) );
}
else
{
return Pow( (X * X), (N / 2) ) * X;
}
}
//这个程序在VB6怎么也得不出正确的运算结果,不知道哪出问题了,望来个大佬解惑,感激感谢{:5_92:}
什么是正确结果,把它说出来,你这个代码的目标是干什么,你不是说,没人知道,别人也不知道你的代码对不对。 jackz007 发表于 2021-12-5 20:17
什么是正确结果,把它说出来,你这个代码的目标是干什么,你不是说,没人知道,别人也不知道你的代 ...
就是一个递归求幂的程序,输入a,b,求a的b次幂,b是偶数输出幂Pow(int X, int N )= Pow( (X * X), (N / 2) ),若b是奇数则Pow(int X, int N )= Pow( (X * X), (N / 2) ) * X,可以运行就是算不准
Please input 2 numbers:
2 5
The power is 0.
Please input 2 numbers:
12 0
The power is 0.
Please input 2 numbers:
4 1
The power is 0.
Please input 2 numbers:
2 3
The power is 0.
Please input 2 numbers:
4 6
The power is 0.
Please input 2 numbers:
5 6 65
The power is 2098733489.
Please input 2 numbers:
The power is 865578241.
20
Please input 2 numbers:
The power is 0.
Please input 2 numbers:
4 4
The power is 0.
Please input 2 numbers:
本帖最后由 jackz007 于 2021-12-5 20:55 编辑
PTF 发表于 2021-12-5 20:43
就是一个递归求幂的程序,输入a,b,求a的b次幂,b是偶数输出幂Pow(int X, int N )= Pow( (X * X), (N...
#include <stdio.h>
unsigned long long powerx(unsigned long long a , unsigned long long b)
{
return (b > 0) ? a * powerx(a , b - 1) : 1 ;
}
int main(void)
{
unsigned long long a , b ;
scanf("%I64u%I64u" , & a , & b) ;
printf("%I64u ^ %I64u = %I64u\n" , a , b , powerx(a , b)) ;
}
编译、运行实况:
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
2 5
2 ^ 5 = 32
D:\00.Excise\C>x
12 0
12 ^ 0 = 1
D:\00.Excise\C>x
4 1
4 ^ 1 = 4
D:\00.Excise\C>x
2 3
2 ^ 3 = 8
D:\00.Excise\C>x
4 6
4 ^ 6 = 4096
D:\00.Excise\C>x
5 6
5 ^ 6 = 15625
D:\00.Excise\C>x
4 4
4 ^ 4 = 256
D:\00.Excise\C> jackz007 发表于 2021-12-5 20:51
编译、运行实况:
你这个可以实现但是算法和时间复杂度不一样了,我是在做算法效率题{:10_250:} PTF 发表于 2021-12-5 20:43
就是一个递归求幂的程序,输入a,b,求a的b次幂,b是偶数输出幂Pow(int X, int N )= Pow( (X * X), (N...
#include <stdio.h>
#include <math.h>
int main(){
int POW(int b, int e);
int a, b;
printf("Please enter 2 integer: ");
scanf("%d%d", &a, &b);
printf("The power %d of %d is %d", b, a, POW(a, b));
return 0;
}
int POW(int b, int e){
if(!(e)) return 1;
else if(e == 1) return b;
else if(!(e%2)) return POW(b*b, e/2);
else return POW(b*b, e/2)*b;
} 傻眼貓咪 发表于 2021-12-5 21:24
解决了,多谢, 问题所在scanf("%d%d", &a, &b);的空格哈尴尬,你的代码简洁多了,学习m(_ _)m
页:
[1]