(define mystery2
(lambda (L)
(if (null? L)
L
(begin
(displayln L)
(append (mystery2 (cdr L))
(list (car L)))))))
Run Code Online (Sandbox Code Playgroud)
我运行它 (mystery2 '((1 2) (3 4) 5 6))
在这里,我不确定“开始”函数的作用。
另外,当我写“displayln L”时,它只给我们((1 2) (3 4) 5 6)). 因为它是递归,所以不应该打印出递减的值吗?
请帮助我理解为什么这里使用“开始”并且 displayln 是这样工作的。
代码本身没有问题。
我想使用cvxopt求解器qp并计算拉格朗日乘数,但我想知道它是如何"完全"的.我试图找到更多的信息,但没有太多关于cvxopt的信息.我正在研究这个示例问题,我不确定这些变量的含义以及它们如何提出解决方案.
这个例子是这样的:
minimize: 2x_{1}^{2} + x_{2}^{2} + x_{1}x_{2} + x_{1} + x_{2}
subject to: x_{1} >= 0
x_{2} >= 0
x_{1} + x_{2} = 1
Run Code Online (Sandbox Code Playgroud)
可以通过使用来解决
Q = 2*matrix([ [2, .5], [.5, 1] ])
p = matrix([1.0, 1.0])
G = matrix([[-1.0,0.0],[0.0,-1.0]])
h = matrix([0.0,0.0])
A = matrix([1.0, 1.0], (1,2))
b = matrix(1.0)
sol=solvers.qp(Q, p, G, h, A, b)
print(sol['x'])
Run Code Online (Sandbox Code Playgroud) 我试图使用Python numpy在字典中压缩两个值,但它不是很成功.拉链的意思是这样的:
{'a0': [1, 2, 3], 'a1': [4, 5, 6]}.[(1, 4), (2, 5), (3, 6)] 每个键中的一个元素)有一个C代码,我想知道哪里是一个坏的部分.
int main() {
// PART A
int a = 12;
printf("%p\n", &a);
int *ptr = &a;
*ptr = 15;
printf("%i\n", a);
// PART B: something bad starts
ptr = (int*)12;
*ptr = 42;
printf("%i\n", *ptr);
}
Run Code Online (Sandbox Code Playgroud)
在PART(B)中,为什么p中的ptr =(int*)12和*ptr = 42编程错误?
我知道发生这个 valgrind 错误是因为我试图使用未初始化的东西。下面的代码是导致此错误的代码。它正在做的是尝试读取 Racket 代码并获取每个符号,例如 + 或define。(标记化)我不希望您彻底理解代码,因为还有很多其他代码可以理解它在做什么。但是,如果您能就我在该行收到此错误的原因提出您的想法,我将不胜感激,symbol = strcat(symbol, newsymbol);
char* newsymbol = talloc(sizeof(char)*2);
*newsymbol = charRead;
newsymbol[1] = '\0';
symbol = strcat(symbol, newsymbol);
Run Code Online (Sandbox Code Playgroud)