ลองทำแบบฝึกหัดที่มีชื่อเสียงและนี่อาจเป็นคำถามสัมภาษณ์
เราจะพยายามใช้ตัวเลขฟีโบนักชี
และเลขฟีโบนักชีเป็นแบบนี้
ตัวเลขแรกเป็นศูนย์
จากนั้นตัวเลขที่สองคือหนึ่ง
พวกเขาเริ่มต้นด้วยศูนย์หนึ่งเสมอ
นี่คือสิ่งที่เกิดขึ้น
เราบวกศูนย์ด้วยหนึ่งเพื่อเท่ากับจำนวนถัดไป
เราบวกหนึ่งกับหนึ่งเพื่อเท่ากับจำนวนถัดไป
เราบวกทีละสองเพื่อให้ได้ตัวเลขถัดไปเป็นสามเพื่อเพิ่มจำนวนถัดไปห้าแปดเพื่อเพิ่มจำนวนถัดไป
เป็นต้น
อย่างที่คุณเห็น สิ่งนี้เติบโตแบบทวีคูณ
มันโตเร็วมากจริงๆ
และการนับแบบนี้ก็แสดงให้เห็นจริงๆ
แต่มันก็เป็นปัญหาที่น่าสนใจเช่นกัน เพราะตัวเลขเหล่านี้ แม้ว่าในตอนแรก จะเติบโตช้ามาก
พวกมันก็ใหญ่ขึ้นเรื่อยๆ และใหญ่ขึ้นเรื่อยๆ และกลายเป็นปัญหาที่อาจทำให้ทรัพยากรสิ้นเปลือง
นี่คือสิ่งที่ฉันต้องการให้คุณทำ
เราจะสร้างฟังก์ชัน
เอฟไอบี
ที่ต้องใช้ตัวเลข
และในนี้เลขนี้จะเป็นเลขดัชนีของฟีโบนักชี
ตัวอย่างเช่น ถ้ามันเป็นเลข 20 มันควรจะมีนี่
ถ้าฉันต้องการ สมมุติว่า fib 20
ในกรณีนี้ ฉันต้องการให้คุณส่งคืนตัวเลขเหล่านี้ทั้งหมด
การใช้เครื่องกำเนิดไฟฟ้า
ทีละคนจนมาถึงจุดนี้
ตอนนี้มีสองวิธีในการทำเช่นนี้
คุณสามารถทำได้ด้วยรายการหรือเราทำด้วยเครื่องกำเนิด
และคุณจะสังเกตได้ว่าด้วยตัวสร้าง มันง่ายกว่ามากที่จะทำกับรายการ เพราะในที่สุด
กับรายการ คุณจะหมดทรัพยากร
สิ่งที่ผมอยากให้คุณทำคือพิมพ์ตัวเลขที่คุณเห็นตรงนี้ไปจนถึง 20
และถ้าคุณต้องการ คุณสามารถเพิ่มจำนวนนั้นต่อไปและดูว่าเกิดอะไรขึ้น
และเป็นโบนัส คุณสามารถลองใช้สิ่งนี้กับรายการได้เช่นกัน
ดังนั้นจึงแสดงในรายการยักษ์เช่นกัน
หยุดวิดีโอชั่วคราวหากต้องการที่นี่
มิฉะนั้นฉันจะให้คำตอบต่อไป
อย่างแรก สิ่งที่เราอยากทำคือบอกว่า A จะเท่ากับศูนย์ และ B เท่ากับหนึ่ง
ดังนั้น A และ B จะเป็นจุดเริ่มต้นของตัวเลข
ในที่นี้ เราจะใช้เครื่องกำเนิดการจัดเรียง
เพื่อวนซ้ำ
จำนวนครั้งที่เราจะจัดเตรียมฟังก์ชันนี้
ตอนนี้อยู่ในนี้
อันดับแรก ฉันต้องการให้ b ยกกำลัง หรือ eh ตอนนี้ เท่ากับ B อะไรก็ตาม ซึ่งก็คือหนึ่ง และ B เป็นจำนวนเท่าใดก็ได้
จำกฎฟีโบนักชีได้ไหม?
เราเพิ่มตัวเลขสองตัวแรกเพื่อให้ได้ตัวเลขที่สาม
เราก็มี B เพื่อหาเลขถัดไป แล้วก็ B เพื่อให้ได้เลขถัดไป
แล้ว B เพื่อให้ได้ตัวเลขถัดไป
อย่างแรกที่ฉันอยากทำคือให้ผล a แล้วบอกว่า เฮ้ แค่ให้ a เป็นอะไรก็ได้ แล้วหยุดฟังก์ชันชั่วคราวจนกว่าจะถึงส่วนถัดไป
หลังจากนั้น หลังจากที่ลูปวนไปวนมา ผมจะบอกว่าผมอยากให้ A เท่ากับ B
และผมอยากให้ B เท่ากับ A บวก B
ลองดูว่าสมเหตุสมผลหรือไม่
ฉันกำลังพูดว่า เฮ้ ผลตอบแทนหรือผลตอบแทน a จากรายการนี้ ดังนั้นมันจะเป็นศูนย์ในตอนแรก
แล้วฉันต้องการให้คุณทำให้เท่ากับหนึ่งตอนนี้เพราะเรากำลังจะย้ายจากนั้นฉันต้องการให้ B เท่ากับหนึ่งเพราะ A
กลายเป็นหนึ่งแล้วจากนั้นก็เปลี่ยนเป็นอันก่อนหน้านี้
ดังนั้น B กลายเป็นสอง
ถ้าเราดูตรงนี้, นั่นเป็นสาเหตุที่เราต้องการให้มี A กับ B ตรงนี้ แล้วเราอยากข้ามแค่อันเดียวแบบนี้
ดังนั้น B ก็ยังควรเป็นหนึ่ง
ดังนั้นสิ่งที่เราอาจต้องการทำที่นี่คือไม่แก้ไข a.
จนกว่าเราจะสามารถทำ A บวก B ได้
แล้วเราจะทำสิ่งนี้ได้อย่างไร?
ดีเราสามารถพูดได้
สมมุติว่าตัวแปรชั่วคราวและอุณหภูมินี้จะคงค่าของ a เมื่อเรามาถึงจุดนี้
ซึ่งเท่ากับศูนย์ แล้วเราจะแก้ไข A ให้เท่ากับ 1 แล้ว B จะแทน A บวก B จะเป็นอุณหภูมิซึ่งเป็นศูนย์
บวกกับ B อะไรก็ตามแต่เดิม ซึ่งเป็นอันหนึ่ง
ฉันรู้ว่าสิ่งนี้อาจทำให้สับสนได้
คุณอาจต้องการหยุดชั่วคราวที่นี่ และอาจพิมพ์และดูว่าเกิดอะไรขึ้น แต่หวังว่าฟังก์ชันของเราจะใช้งานได้ในตอนนี้
ถ้าตอนนี้ฉันทำอะไรบางอย่างเช่นสำหรับ x ใน fib และให้มันเป็น 100
และลองพิมพ์คำตอบออกมา
พิมพ์เลย
X และฉันเรียกใช้สิ่งนี้
ก็ได้ ดูนั่นสิ
ฉันได้รับตัวเลขฟีโบนักชีทั้งหมดของฉัน
ลองทำ 20 อย่างที่เราเห็นในตัวอย่างถ้าฉันคลิกเรียกใช้
ผมได้4181
ฉันอายุ 19 เพราะจำการนับของเราเริ่มต้นที่ศูนย์
ในทางเทคนิคที่นี่ ถ้าเราต้องการ เราสามารถทำได้ 21 ที่นี่ คลิกเรียกใช้
และเมื่อเธอได้หก เจ็ด หก ห้า ซึ่งเป็นสิ่งที่เราได้มา
เยี่ยมมาก
แต่คุณสามารถเห็นได้ว่าจำนวนดังกล่าวเพิ่มขึ้นอย่างมากได้อย่างไร
เมื่อเราเพิ่มเป็น 1,000
ทีนี้ ถ้าเราจะทำสิ่งนี้ในรายการ มันจะออกมาเป็นแบบนี้
มาคัดลอกที่นี่
ตอนนี้ 52 รายการที่มีรายการหมายความว่าเราต้องเพิ่มรายการที่นี่
และแทนที่จะยอมจำนน เราจะทำผล dot ต่อท้าย
และเราจะต่อท้ายค่าใด ๆ ก็ตาม ซึ่งก็คือค่าเริ่มต้น
แล้วเราก็จะทำแบบเดียวกับที่เคยทำมา
ดังนั้นแทนที่จะใช้ ELT ตอนนี้เราแค่ต่อท้ายรายการนี้ และในตอนท้ายเราก็แค่กลับมา
ผลรายการ.
ตอนนี้ ถ้าฉันส่งคืนสิ่งนี้ สมมติว่า fib two และให้ 100 และฉันคลิก run และให้ความเห็นเกี่ยวกับต้นฉบับด้วยตัวสร้าง
เราก็ควรจะพิมพ์นี่ ใช่ไหม?
เลยมาพิมพ์กัน
และคลิกเรียกใช้
ไม่เป็นไร.
นั่นเป็นรายการใหญ่
ทีนี้ ถ้าเราจะทำ 1,000 ที่นี่
คุณเห็นว่า?
มันใช้เวลาค่อนข้างนาน
ถ้าเราทำ 10,000 ล่ะ?
ไม่เป็นไร.
ต้องใช้เวลาพอสมควร
และคุณจะเห็นได้ว่านี่ทำงานหนักแค่ไหน
คุณรู้อะไรไหม?
ฉันจะหยุดมัน
และกลับไปที่เครื่องกำเนิดของเรา
ทาง.
และลองทำ 10,000 ที่นี่
เรามาดูกันว่า 10,000 หน้าตาเป็นอย่างไรกับเครื่องกำเนิดไฟฟ้า
มันยังคงทำงานหนักอยู่ แต่ฉันไม่ได้เก็บสิ่งนี้ไว้ในความทรงจำ
เรากำลังดำเนินการทีละรายการ และฉันสามารถดำเนินการได้ในกรณีของเรา เพียงพิมพ์ทีละรายการ
นี่เป็นคำถามสัมภาษณ์ทั่วไป
ฉันคิดว่ามันค่อนข้างสับสนโดยไม่จำเป็น
แต่มันแสดงให้เห็นพลังของเครื่องกำเนิดไฟฟ้า
คุณอาจต้องดูวิดีโอนี้สองสามครั้ง แต่หวังว่าตอนนี้คุณจะรู้สึกสบายใจเล็กน้อยกับการใช้ช่วงและวิธีที่เราสามารถปรับปรุงประสิทธิภาพโดยใช้ตัวสร้าง
เจอกันใหม่ตอนหน้าค่ะ
ลาก่อน.