请问为什么输出结果只做了一次循环

img

我不是设置了10次循环吗?请问为什么输出结果只做了一次循环
我用python试着按这个重新做了一遍,能够完整做十次循环,但放到c里就不行了

img

sum = ...
修改为
sum += ...

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7725055
  • 你也可以参考下这篇文章:10-1Python学习笔记 10-2C语言学习笔记 : 在文本编辑器中新建一个文件, 写几句话来总结一下你至此学到的Python知识
  • 除此之外, 这篇博客: 【最全】阶乘算法!(python和C语言)中的 方法二:递归函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #include<stdio.h>
    long fac(int n){  //定义fac函数 
    	long f;
    	printf("n=%d\t",n);  //输出当前n的值(大->小) 
    	if(n<0){
    		printf("\nn<0,数据错误!");  //判断是否小于0 
    		f=0;   //赋值为0 
    	}
    	else if(n==0)f=1;  //最后停止的标志 
    	else f=fac(n-1)*n;  //数据没问题调用自己继续执行 
    	printf("\n 返回:n=%d\tf=%d",n,f); //当调用到n==0后 开始执行 
    	return f;
    } 
    main(){
    	int n;
    	long y;
    	printf("需要输出的轮数:");
    	scanf("%d",&n);
    	y=fac(n);  //调用fac函数 
    	if(y!=0){  //y!=0就输出 
    		printf("\n%d!=%ld\n",n,y);
    	} 
    }
    

    在这里插入图片描述

  • 您还可以看一下 龙豪杰老师的python自动化办公【高级】课程中的 数据筛选演示小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    对于代码循环只执行了一次的问题,可能是因为在移植到C语言中时,循环控制变量没有正确更新导致的。建议在C语言的实现中加上调试语句,输出循环控制变量的值,以便查找问题所在。

    针对快速排序算法,可以对C语言代码进行以下优化: 1.添加递归深度控制,防止栈溢出,例如在每次递归时加入计数器,到达一定深度后改为插入排序; 2.选择合适的基准数,例如取左、中、右三个元素中的中位数作为基准数,可以减少算法复杂度; 3.在实现时避免递归调用,改为迭代方式,可以降低函数调用开销。

    对于冒泡排序,可以对C语言代码进行以下优化: 1.添加标志位,当某次排序不进行元素交换时直接退出循环,提前结束排序; 2.优化边界,排序时忽略已经排好序的部分元素; 3.优化交换操作,改为使用临时变量保存元素交换,而不是直接使用加减法运算。

    关于Python中的列表结构,补充一些知识: 1.列表的存储空间是动态分配的,当空间不足时会自动扩容,扩容后会重新申请更大的空间,并将原有元素复制到新空间中; 2.Python列表支持切片操作,可以方便地截取元素子序列; 3.通过使用列表解析,可以非常方便地对列表进行变换和筛选。

    对于选择排序,可以对C语言代码进行以下优化: 1.优化交换操作,改为使用异或运算实现元素交换,而不是使用加减法运算; 2.优化比较次数,记录最小元素的索引,减少不必要的比较操作; 3.考虑前面已经排序好的部分,不再对其进行比较。

    对于Python变量的定义,建议在定义变量时加上注释说明变量类型和用途,以提高代码可读性和可维护性。另外,类型的声明在Python中不是必须的,但推荐使用,有助于提高代码的稳定性和性能。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^