D语言中的阶乘 我刚刚开始用D,试图在D中编写一个简单的阶乘程序,D中有什么类似C++的向量吗?我想用向量来创建一个动态函数来计算阶乘。 d,动态数组是可调整的,可以被连接,就像C++中的向量一样。 下面是这样一个数组的示例,它从stdin读取并写入stdout: import std.stdio;//用于读写 void main()//void for main表示操作系统的“退出时返回0的int” { int n; readf(“%s”,&n);//跳过空白,然后以默认格式读取int auto f=[1];//包含1的int的动态数组 foreach(i;1..n+1)//对于i=1,2,3,…,n-1,n { f~=f[$-1]*i;//将其最后一个元素乘以i追加到f } writeln(f);//以默认格式打印动态数组 }

D语言中的阶乘 我刚刚开始用D,试图在D中编写一个简单的阶乘程序,D中有什么类似C++的向量吗?我想用向量来创建一个动态函数来计算阶乘。 d,动态数组是可调整的,可以被连接,就像C++中的向量一样。 下面是这样一个数组的示例,它从stdin读取并写入stdout: import std.stdio;//用于读写 void main()//void for main表示操作系统的“退出时返回0的int” { int n; readf(“%s”,&n);//跳过空白,然后以默认格式读取int auto f=[1];//包含1的int的动态数组 foreach(i;1..n+1)//对于i=1,2,3,…,n-1,n { f~=f[$-1]*i;//将其最后一个元素乘以i追加到f } writeln(f);//以默认格式打印动态数组 },d,D,输入 10 输出为: [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800] 如注释中所述,有关内置动态阵列的更多信息,请参阅 然而,你提到的动态函数是什么还不清楚。 通常,我们不需要数组或向量来计算阶乘。 查看其他一些计算D中阶乘的方法。为什么不使用它针对任意精度的数值进行了优化。即使使用ulong(2^64),您也只能在20之前计算阶乘,对于这种用例,内联表可能更有意义。下面是一个使用BigInt的示例: import std.

输入

10
输出为:

[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]
如注释中所述,有关内置动态阵列的更多信息,请参阅


然而,你提到的动态函数是什么还不清楚。 通常,我们不需要数组或向量来计算阶乘。 查看其他一些计算D中阶乘的方法。

为什么不使用它针对任意精度的数值进行了优化。即使使用
ulong
2^64
),您也只能在20之前计算阶乘,对于这种用例,内联表可能更有意义。下面是一个使用
BigInt
的示例:

import std.bigint:bigint;
BigInt阶乘(int n)
{
自动b=BigInt(1);
foreach(i;1..n+1)
b*=i;
返回b;
}
空干管()
{
导入标准stdio:writeln;
阶乘(10).writeln;//3628800
阶乘(100).writeln;//9.33*10^157
}

如果您想了解有关动态阵列的更多信息,请参阅DLang教程页面,或者可能会对您有所帮助?

我没有使用D lang,但您是否参考了?文档中提到了一些关于动态arays的内容。@DejanLekic:是的,阶乘实际上是一个例子。然而,出于某种原因,这个问题涉及数组。