我正在使用Scala来创建一个程序,但我正在试验一个循环可以做多少迭代的墙.在Scala中进行函数式编程和编程时,我仍然很新,但这就是我现在所拥有的:
val s = Range(1, 999999999).view.foldLeft(0)(_ + _ / whatever);
Run Code Online (Sandbox Code Playgroud)
但我不能让循环说比999999999大几个数量级,比如说长的最大值.我知道我可以使用for循环,但我无法看到折叠选项.
谁知道如何实现这一目标?
谢谢.
我正在尝试创建一个数组来保存一个int,然后当要添加另一个int时,增加它的大小以容纳另一个int ..依此类推..
我知道这不是realloc的有效使用,但它更能证明概念.只是让它工作将允许我优化它并能够将它应用于有用的东西.一个工作的例子.当我调用print函数时,问题就来了,它只是段错误.任何帮助,将不胜感激.
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
typedef char String[100];
void begin(int *);
void add(int *, int);
void print(int *);
int tempcount=0;
int main(void)
{
int *n=NULL;
String menu;
begin(n);
while(true)
{
scanf("%9s", menu);
if(!strcmp("a", menu)) //add
{
int i=0;
scanf("%d", &i);
add(n, i);
}
else if(!strcmp("p", menu)) //print
{
print(n);
}
else if(!strcmp("q", menu)) //quit
{
free(n);
break;
}
}
return 0;
}
void begin(int *n)
{
n=malloc(sizeof(int));
if(n==NULL)
{
printf("Error in malloc!");
return;
} …Run Code Online (Sandbox Code Playgroud) 我一直在研究Project Euler 问题24并且遇到了Scala的解决方案(无论如何我试图解决它的语言).我原本打算自己做,但现在我发现这个解决方案是如何工作的.
问题:
字典排列0,1和2是:
012,021,102,120,201和210.
数字0,1,2,3,4,5,6,7,8和9的百万次词典排列是多少?
解决方案:
def permutations(s : String) : Seq[String] =
{
if(s.size == 1)
Seq(s);
else
s.flatMap(x => permutations(s.filterNot(_ == x)).map(x +));
}
val ans = permutations("0123456789")(1000000 - 1).toLong;
println(ans);
Run Code Online (Sandbox Code Playgroud)