• 关于

    结束条件语句问题怎么解决

    的搜索结果

回答

首先给你个忠告永远不要省略if for while等语句的大括号 然后 一行只写一句话 最后 具体的错误等稍后我看过代码再给出 ###### 递归爆炸了,改成循环吧 ######数据不大 可以使用递归  ,数据大了 会出现栈溢出,因为在没有分支结束前或者被强行中断,单个线程是不会释放栈现场的。1.修改栈大小 。2.采用非递归方式。----几乎各个语言都要避免下这个问题哦######应该需要修改编译器堆栈的大小,但没有实际尝试,可以先修改N的大小,看是否堆栈还溢出。是否还有其他错误。######递归函数中没有一个return,递归调用还在必经路径上——连编译器都知道它会归死。######回复 @zhangjihan10 : 模拟一个栈 加上goto语句 就比较简单了 不过代码还是会很乱######回复 @zhangjihan10 : 当然可以, 自己模拟一个栈就可以了, 但是这有什么意义呢?######回复 @猫咪喵喵 :没递归结束条件呀,你能用循环写出来吗######回复 @猫咪喵喵 : 你是怎么贴出带有行号和滚动条这种效果的######然后统计时间的时候居然把数据准备 打印输出结果都算进去 真是乱的可以###### 简单看了一下你的代码 你的代码确实会栈溢出 这源于你并没有指定结束递归的条件 ###### 试试看这个 #include<stdio.h> #include<stdlib.h> #include<time.h> #define N 1000 void quick_sort(int a[], int start, int end) { int i = start, j = end; int key = a[i]; while(i < j) { for(; i < j; j--) { if(a[j] < key) { a[i++] = a[j]; break; } } for(; i < j; i++) { if(a[i] > key) { a[j--] = a[i]; break; } } } a[i] = key; if(start < i - 1){ quick_sort(a, start, i - 1); } if(end > i + 1){ quick_sort(a, i + 1, end); } } int main() { srand((unsigned)time(NULL)); //随机数种子准备 int array[N] = {0}; //要被排序的数据准备 for(int i = 0; i < N; i++){ //随机生成一些数据 array[i] = rand() % N; } clock_t start = clock(); //记录开始时间 quick_sort(array, 0, 999); //调用排序算法对数据进行排序 clock_t end = clock(); //记录结束时间 for(int i = 0; i < N; i++){ //打印输出排序后的数据 printf("%5d", array[i]); } printf("\n"); double t = (double)(end - start) / CLOCKS_PER_SEC; //计算算法所消耗的时间 printf("快速排序运行时间:%lf秒\n", t); //输出时间 return 0; } ######回复 @月光双刀 : 仔细看提问者的代码 溢出并不是因为数据量过大 而是他的代码有问题 所以说 这个可以解决问题######这个也会栈溢出######编辑器上有个插入代码或脚本啦 @zhangjihan10######回复 @zhangjihan10 : 。######求大神手把手教代码高亮使用方法

kun坤 2020-06-14 12:17:32 0 浏览量 回答数 0

回答

首先给你个忠告永远不要省略if for while等语句的大括号 然后 一行只写一句话 最后 具体的错误等稍后我看过代码再给出 ###### 递归爆炸了,改成循环吧 ######数据不大 可以使用递归  ,数据大了 会出现栈溢出,因为在没有分支结束前或者被强行中断,单个线程是不会释放栈现场的。1.修改栈大小 。2.采用非递归方式。----几乎各个语言都要避免下这个问题哦######应该需要修改编译器堆栈的大小,但没有实际尝试,可以先修改N的大小,看是否堆栈还溢出。是否还有其他错误。######递归函数中没有一个return,递归调用还在必经路径上——连编译器都知道它会归死。######回复 @zhangjihan10 : 模拟一个栈 加上goto语句 就比较简单了 不过代码还是会很乱######回复 @zhangjihan10 : 当然可以, 自己模拟一个栈就可以了, 但是这有什么意义呢?######回复 @猫咪喵喵 :没递归结束条件呀,你能用循环写出来吗######回复 @猫咪喵喵 : 你是怎么贴出带有行号和滚动条这种效果的######然后统计时间的时候居然把数据准备 打印输出结果都算进去 真是乱的可以###### 简单看了一下你的代码 你的代码确实会栈溢出 这源于你并没有指定结束递归的条件 ###### 试试看这个 #include<stdio.h> #include<stdlib.h> #include<time.h> #define N 1000 void quick_sort(int a[], int start, int end) { int i = start, j = end; int key = a[i]; while(i < j) { for(; i < j; j--) { if(a[j] < key) { a[i++] = a[j]; break; } } for(; i < j; i++) { if(a[i] > key) { a[j--] = a[i]; break; } } } a[i] = key; if(start < i - 1){ quick_sort(a, start, i - 1); } if(end > i + 1){ quick_sort(a, i + 1, end); } } int main() { srand((unsigned)time(NULL)); //随机数种子准备 int array[N] = {0}; //要被排序的数据准备 for(int i = 0; i < N; i++){ //随机生成一些数据 array[i] = rand() % N; } clock_t start = clock(); //记录开始时间 quick_sort(array, 0, 999); //调用排序算法对数据进行排序 clock_t end = clock(); //记录结束时间 for(int i = 0; i < N; i++){ //打印输出排序后的数据 printf("%5d", array[i]); } printf("\n"); double t = (double)(end - start) / CLOCKS_PER_SEC; //计算算法所消耗的时间 printf("快速排序运行时间:%lf秒\n", t); //输出时间 return 0; } ######回复 @月光双刀 : 仔细看提问者的代码 溢出并不是因为数据量过大 而是他的代码有问题 所以说 这个可以解决问题######这个也会栈溢出######编辑器上有个插入代码或脚本啦 @zhangjihan10######回复 @zhangjihan10 : 。######求大神手把手教代码高亮使用方法

kun坤 2020-06-02 14:30:33 0 浏览量 回答数 0

回答

" 首先给你个忠告永远不要省略if for while等语句的大括号 然后 一行只写一句话 最后 具体的错误等稍后我看过代码再给出 ###### 递归爆炸了,改成循环吧 ######数据不大 可以使用递归  ,数据大了 会出现栈溢出,因为在没有分支结束前或者被强行中断,单个线程是不会释放栈现场的。1.修改栈大小 。2.采用非递归方式。----几乎各个语言都要避免下这个问题哦######应该需要修改编译器堆栈的大小,但没有实际尝试,可以先修改N的大小,看是否堆栈还溢出。是否还有其他错误。######递归函数中没有一个return,递归调用还在必经路径上——连编译器都知道它会归死。######回复 @zhangjihan10 : 模拟一个栈 加上goto语句 就比较简单了 不过代码还是会很乱######回复 @zhangjihan10 : 当然可以, 自己模拟一个栈就可以了, 但是这有什么意义呢?######回复 @猫咪喵喵 :没递归结束条件呀,你能用循环写出来吗######回复 @猫咪喵喵 : 你是怎么贴出带有行号和滚动条这种效果的######然后统计时间的时候居然把数据准备 打印输出结果都算进去 真是乱的可以###### 简单看了一下你的代码 你的代码确实会栈溢出 这源于你并没有指定结束递归的条件 ###### 试试看这个 #include<stdio.h> #include<stdlib.h> #include<time.h> #define N 1000 void quick_sort(int a[], int start, int end) { int i = start, j = end; int key = a[i]; while(i < j) { for(; i < j; j--) { if(a[j] < key) { a[i++] = a[j]; break; } } for(; i < j; i++) { if(a[i] > key) { a[j--] = a[i]; break; } } } a[i] = key; if(start < i - 1){ quick_sort(a, start, i - 1); } if(end > i + 1){ quick_sort(a, i + 1, end); } } int main() { srand((unsigned)time(NULL)); //随机数种子准备 int array[N] = {0}; //要被排序的数据准备 for(int i = 0; i < N; i++){ //随机生成一些数据 array[i] = rand() % N; } clock_t start = clock(); //记录开始时间 quick_sort(array, 0, 999); //调用排序算法对数据进行排序 clock_t end = clock(); //记录结束时间 for(int i = 0; i < N; i++){ //打印输出排序后的数据 printf("%5d", array[i]); } printf("\n"); double t = (double)(end - start) / CLOCKS_PER_SEC; //计算算法所消耗的时间 printf("快速排序运行时间:%lf秒\n", t); //输出时间 return 0; } ######回复 @月光双刀 : 仔细看提问者的代码 溢出并不是因为数据量过大 而是他的代码有问题 所以说 这个可以解决问题######这个也会栈溢出######编辑器上有个插入代码或脚本啦 @zhangjihan10######回复 @zhangjihan10 : 。######求大神手把手教代码高亮使用方法"

montos 2020-06-03 17:13:17 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

问题

【精品问答】python技术1000问(1)

问问小秘 2019-12-01 21:57:48 454222 浏览量 回答数 19

问题

【javascript学习全家桶】934道javascript热门问题,阿里百位技术专家答疑解惑

管理贝贝 2019-12-01 20:07:22 6202 浏览量 回答数 1

问题

最大限度利用 JavaScript 和 Ajax 性能:报错

kun坤 2020-06-05 22:56:50 0 浏览量 回答数 1

问题

Nginx性能为什么如此吊

小柒2012 2019-12-01 21:20:47 15038 浏览量 回答数 3
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站