- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
所以我最近一直在研究 Python,我试图找到一种方法来在单个表达式中输出斐波那契数列的第 n 个数。这是我到目前为止编写的代码:
(lambda f: f if f<2 else (f-1)+(f-2))(n)
# n == 1 -> 1
# n == 2 -> 1
# n == 3 -> 3
# n == 4 -> 5
# n == 5 -> 7
....
但是,正如我在上面评论的那样,这只会输出一组奇数。我很困惑为什么会这样,因为如果我将其重写为命名的 lambda 函数,它看起来像这样:
f = lambda n: n if n<2 else f(f-1)+f(f-2)
# f(1) -> 1
# f(2) -> 1
# f(3) -> 2
# f(4) -> 3
...
# f(10) -> 55
...
现在我添加 Lambda 微积分标签的原因是因为我不确定这个问题是否属于简单理解 Python 如何处理这个问题的范畴。我读过一些关于 lambda 演算中 Y 组合器的内容,但这对我来说是一门外语,无法从我找到的关于 lambda 演算的资源中得到任何信息。
现在,我尝试在一行代码中执行此操作而不是为其命名的原因是因为我想尝试将此 lambda 函数放入列表推导式中。所以做这样的事情:
[(lambda f: f if f<2 else (f-1)+(f-2))(n) for n in range(10)]
并创建斐波那契数列中前 x 个数字的数组。
我正在寻找的是一种在一个表达式中完成这一切的方法,如果这属于 Lambda 演算的范畴,我相信它属于,有人可以解释这是如何工作的。
欢迎使用 JavaScript、C# 或其他支持 Lambda 函数的类 C 语言提供答案。
biên tập:我已经找到了我尝试做的事情的解决方案:
[(lambda f: (lambda x: f(lambda v: x(x)(v)))(lambda x: f(lambda v: x(x)(v))))(lambda f:(lambda n: n if n<2 else f(n-1)+f(n-2)))(y) for y in range(10)]
我知道这根本不实用,永远不应该使用这种方法,但我关心的是我能否这样做,而不是我是否应该这样做。
câu trả lời hay nhất
您需要将 lambda 分配给一个实际变量,然后gọi lambda 内部的 lambda:
>>> g = lambda f: f if f < 2 else g(f-1)+g(f-2)
>>> [g(n) for n in range(10)]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
关于python - 在一个表达式中打印斐波那契数列的前 n 个数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46498798/
Câu hỏi này đã có câu trả lời ở đây: Prolog - đếm số lần lặp lại trong danh sách (3 câu trả lời) Đã đóng 7 năm trước. Vì vậy, tôi đang cố gắng tạo một phương pháp để xác định số N trong danh sách. Tôi đã thử nó
Cách tốt nhất để đọc từ tệp sau dấu chấm phẩy bằng sscanf hoặc bất kỳ lệnh nào khác, ví dụ: nếu tệp của tôi có 5: 4 5 6 7. Cách lưu trữ giá trị sau dấu hai chấm trong mảng. Hơn nữa, số số nguyên theo sau dấu chấm phẩy có thể khác nhau, tức là trong ví dụ trên
Tôi đang cố gắng trả lại số thứ n. Nếu số đó là bội số của 3 hoặc 7 thì bắt đầu từ 1, bỏ qua số đó và lấy số tiếp theo. Tuy nhiên, nếu số đó là bội số của 3 và 7 thì số đó không bị bỏ qua. int công khai Multip
Làm thế nào để có được một số phần tử nhất định một cách hiệu quả từ cuối? 1 trông giống như 2 ba!! Ví dụ: làm cách nào để lấy nội dung của 2 div cuối cùng? Câu trả lời hay nhất$(document).ready(function(){
//Tạo ra tính cách thực phẩm cho(i=0; i
Tôi đang cố gắng tìm số K lớn nhất trong một mảng được sắp xếp nhất định. Ví dụ: Đầu vào -> [5, 12, 45, 32, 9, 20, 15] Đầu ra -> K = 3, [45, 32, 20] Đoạn mã tôi viết cho đến nay trả về nhiều nhất
Hai bảng số a và b được viết và gộp lại với nhau theo thứ tự tăng dần và loại bỏ các số trùng lặp. Vấn đề bây giờ là tìm số thứ n trong siêu bảng này tốt hơn độ phức tạp O(n). Giới hạn 1 #include sử dụng nam
Cho một mảng A có N phần tử, tôi cần tìm cặp (i,j) sao cho i không bằng j và nếu với tất cả các cặp (i, j) thì nó sẽ ở vị trí thứ k. Ví dụ: Cho N=4 và mảng A=[1 2 3 4] if
Cho một tập hợp số bị bỏ qua, tôi cần tìm số thứ N không tồn tại trong tập hợp đó. Ví dụ: Cho tập hợp [1, 4, 5] một số kết quả: với N = 1 kết quả là 0 với N = 2 kết quả là 2 (vì 1 bị bỏ qua) với N =
Tôi bắt gặp câu hỏi này vài tháng trước trong một cuộc thử thách tuyển dụng của Amazon. Cho hai số a và b và danh sách bội số tăng dần của chúng, hãy tìm bội số thứ n. Ví dụ: nếu a = 4, b = 6 và n = 6 thì đáp án là 18 vì danh sách là 4
Vì vậy, gần đây tôi đã thử nghiệm với Python và tôi đang cố gắng tìm cách xuất số thứ n của dãy Fibonacci trong một biểu thức. Đây là mã tôi đã viết cho đến nay: (lambda f: f if f 1 # n == 2 -> 1
Bài tập là viết một chương trình C++ nhận số đầu vào n và xuất ra số thứ n trong dãy: 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6... Đây là nội dung Tôi đã đạt được những gì tôi đã nghĩ ra cho đến nay:
Câu hỏi rất đơn giản (và có thể có câu trả lời): Làm thế nào để tìm 2 số nhỏ nhất trong một mảng? for ( i = 1; i Về c++ - 2 số nhỏ nhất trong một mảng, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: ht
Bạn có thể gọi Nokogiri::XML::Node#ancestors.size để xem độ sâu lồng nhau của các nút. Nhưng có cách nào để xác định độ sâu lồng nhau của nút con lồng nhau sâu nhất không? Ngoài ra, làm thế nào để bạn tìm thấy tất cả các nút lá đi xuống từ một nút? hầu hết
Nhiệm vụ là tìm fibanocci của n số. Bài tập: 1. Tìm số Fibonacci của n số. 2. Sử dụng các biến n, first=0, two=1, next, c. Định dạng đầu vào: sử dụng câu lệnh printf. sử dụng quét
Tôi muốn thêm số lượng của mỗi 10 phần tử. Ví dụ: function myFunction() { for (var i = 1; i "; } } Kết quả: 1,2,3,4,5,6,7,8,9,
Tôi muốn viết chương trình tính số thứ n của dãy Fibonacci mà tôi thực hiện bằng printf và scanf. Nhưng tôi muốn thay đổi chương trình của mình để nhập số sê-ri vào dòng lệnh thay vì khi chương trình nhắc. Đây là những gì tôi đã nghĩ ra. nó biên dịch,
Tôi có một danh sách các đối tượng trong một sơ đồ. Mỗi đối tượng được liên kết với một giá trị tin cậy có thể được tính toán trong thời gian chạy. Tôi muốn tìm top 50 đối tượng như vậy có giá trị tin cậy cao nhất. Ví dụ: ((WordPair1) (WordPair2)), v.v. đều là đối tượng của tôi.
Tôi đang tìm kiếm một thuật toán, với một mục tiêu, trả về số thứ N có bit mục tiêu là 0. Ví dụ: đối với đầu vào có n={0,1,2,3} và target=1, đầu ra sẽ là (nhị phân) 000,001,100,101 Câu trả lời hay nhất chỉ cần viết giá trị N-1
Tôi đang cố gắng tạo một hàm để lấy 3 số lớn nhất trong một vectơ. Ví dụ: Số: 1 6 2 5 3 7 4 Kết quả: 5 6 7 Tôi nghĩ tôi có thể sắp xếp chúng theo DESC, lấy 3 số ở đầu rồi sắp xếp chúng
Tôi là một lập trình viên xuất sắc, rất giỏi!