打印菱形图案的Python代码是:
def main():
n= input('The size of the diamond :: ')
a=n
for i in range(n):
print ' '*a,'*'*(2*i-1)
a=a-1
a=0
p=n
for i in range(n):
print ' '*a,'*'*(2*p-1)
a=a+1
p=p-1
main()
对于类似的输出,C 中的代码是::
#include<stdio.h>
int main()
{
int i,j;
int n;
printf("---PATTERN---\n");
printf("enter the number of rows :: \n");
scanf("%d",&n);
for(i=0;i<=n;i++)
{
for(j=n;j>i;j--)
{
printf(" ");
}
for(j=0;j<2*i+1;j++)
{
printf("*");
}
printf("\n");
}
i=0;
for(i=0;i<=n;i++)
{
for(j=0;j<i;j++)
{
printf(" ");
}
for(j=2*n-1;j>=2*i-1;j--)
{
printf("*");
}
printf("\n");
}
return 0;
}
我的问题是:我们能说从数学角度来说,Python 代码的时间复杂度比 C 代码更好吗? 虽然C程序的运行时间比Python少,但Python中的同一程序不像C那样涉及循环嵌套,我们是否可以说从结构上来说Python是一种更高效的语言? -如果这个疑问听起来很愚蠢,我很抱歉。
最佳答案
Can we say that Mathematically the time complexity of the code in python is better than that of C?
不,你不能。代码相对于机器(甚至是理论上的)的时间复杂度取决于机器最终做什么(解决问题所花费的时间),而不是你如何告诉要做什么,即 C 和 Python 是多种方法中的两种告诉它做什么。但是,我建议您编译 Python code to C然后对照您的 C 程序进行检查,通过该程序您将比较苹果而不是橙子。更好的是,将它们都编译(并链接)为二进制文件并反汇编它们以验证您的假设,看看两者实际上都在循环。
Python does not involve nesting of loops
这只是 Python 作为一种语言提供的语法糖;然而,在幕后,它也会循环,就像其他答案提到的那样。
can we say that structurally Python is a more efficient language?
不,因为结构是风格问题而不是效率问题。
如果您考虑的是性能(时间)或内存效率,那么它不是语言本身的固有性质,而是语言的实现以及它在给定架构上的执行情况;这再次应该被测量而不是假设/猜测。以Lua为例,同一种语言有不同的解释器(实现),其中few are remarkably faster than the others 。因此,效率是实现的问题,而不是语言本身的问题。
关于python - 我们可以说从数学角度来说,Python 代码的时间复杂度比 C 代码更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24116213/