A 上樓梯時,B 從同一樓梯往下走。每次不一定只走 1 級,最多可以一次跳過 3 級(即直接前進 4 級)。
但無論走多少級,1 次移動所需時間不變。兩人同時開始走,求共有多少種“兩人最終同時停在同一級”的情況(假設樓梯寬度足夠,可以相互錯開,不會撞上。另外,同時到達同一級時視為結(jié)束)。
舉個例子,有 4 級樓梯的時候,結(jié)果共有 4 種情況.
下面是我仿照作者例子中給的代碼寫的js版本。
//走樓梯問題,遞歸方法求解.
//來寫一個復制Number類型的函數(shù)
function NumCopy(num) {
var copy = num-0;
return copy;
}
let N = 4, steps = 3, memo = {};
function move(a, b) {
if([a, b] in memo) {
return memo[[a, b]];
}
if(a>b) {
return memo[[a, b]] = 0;
}
if(a == b) {
return memo[[a, b]] = 1;
}
if(b>a) {
for(let i=1; i<=steps; i++) {
for(let j=1; j<=steps; j++) {
cnt += move(NumCopy(a+i), NumCopy(b-j));
}
}
}
memo[[a, b]] = cnt;
}
let cnt = 0;
console.log(move(0, N));
這次又不知道哪錯了?
let N = 10, steps = 4, memo = {};
function move(a, b) {
if(a>b) {
return memo[[a, b]] = 0;
}
if(a == b) {
return memo[[a, b]] = 1;
}
let cnt = 0;
for(let i=1; i<=steps; i++) {
for(let j=1; j<=steps; j++) {
cnt += move(a+i, b-j);
}
}
memo[[a, b]] = cnt;
return memo[[a, b]];
}
console.log(move(0, N));
有兩個地方寫錯了,第一處是let cnt = 0應寫在函數(shù)內(nèi),之后,要想輸出結(jié)果,應該給函數(shù)加個返回值。
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領(lǐng)域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。