就是求浮点数的整数次方,开始觉得medium题怎么emmmm,但是发现事情并不简单,可能涉及时间复杂度是问题,用了好几种算法都不行(自我感觉没问题啊),又有点偷懒 了,不想研究了,先记一下出错的代码
double myPow(double x, int n) {
double funtion_pow(double x)
{
double result=1.0;
result=result*x;
}
if(n>0)
{
double result;
while(n--)
{
result=funtion_pow(x);
}
return result;
}
if(n==0)
{
return 1.0;
}
if(n<0)
{
double result;
while((-n)--)
{
result=funtion_pow(1/x);
}
return result;
}
}
double myPow(double x, int n) {
if(n>0){
double result=1;
for(int i=0;i<n;i++)
{
result=result*x;
}
return result;
}
else if(n<0)
{
double result=1;
double new_x;
new_x=1/x;
for(int i=0;i<-n;i++)
{
result=result*new_x;
}
return result;
}
else if(n==0)
{
return 1.0;
}
}
*上面程序本质上是一样的,都是分类讨论n的正负,然后循环计算result
这个抱着侥幸的心理直接用了pow函数
找了几种runtime error 的原因
- 除以零
- 数组越界:int a[3]; a[10000000]=10;
- 指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;
- 使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10;
- 数组开得太大,超出了栈的范围,造成栈溢出:int a[100000000];
*立个flag,明天接着做,今晚我非得把之前没安装好的微信装好不可