第一步:
首先分析问题。你发现它需要递归。
第 2 步:
找出递归方案并建立一个假设:
因为n==2
你的答案是1 2 1
,因为n==3
ans 是1 2 1 3 1 2 1
然后你突然注意到n==3
你正在写第一个答案n==2
,然后3
又一次回答n==2
所以现在你的假设将是 n- 的答案1 然后 n 再回答 n-1
第三步:
验证假设:
现在你应该验证你是否正确。你检查了 n=2 和 n=4,哇!你会找到预期的答案。现在你有了一个经过验证的递归假设。继续写代码。
第4步:
写下代码:
首先找出基本情况:这里是n = 1,因为你不能更深入。所以我们的函数开始像:
void foo(int n){
if(n==1){
cout<<1;
return ;
}
}
现在使用我们的假设,写下剩余的代码。
void foo(int n){
if(n==1){
cout<<1;
return ;
}
foo(n-1); //our hypothesis say first we need to write the answer for n-1
cout<<" "<<n<<" "; //then writing n itself
foo(n-1); //again writing answer for n-1
}