题目:
6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少?10 = 6 + 4 4
18 = 10 + 8 4 + 4
32 = 18 + 14 8 + 6
? = 32 + 22 14 + 8
? = 54 + 32 22 + 10
? = 86 + 44 32 + 12‘
阶梯思路:
分析特点就是f(x) = f(x-1)+ M;
其中M又是可递归的
4 8 14 22
f(N)=f(N-1)+2*N
f(1) = 4
f(2) = 8
f(3) = 14
f(4) = 22
F(X) = F(X - 1) + F(Y)
F(Y) = F(Y - 1) + 2*Y
F(X) = F(X - 1) + F(Y - 1)+ 2*Y
编程实现
package com.susheng.practice;
public class RecursionTest
{
public static void main(String[] args)
{
RecurverTest0 rt0 = new RecurverTest0();
for (int i = 1; i < 100; i++)
{
System.out.println(rt0.M(i));
}
}
}
class RecurverTest0
{
//二层递归的函数
private int F(int N)
{
//负数不保证
if(0 >= N)
return 0;
if (1 == N)
return 4;
return(F(N-1)+ 2*N);
}
//调用M(N)就可以求出N位置的值
public int M(int N)
{
//负数不保证
if(0 >= N)
return 0;
if(1 == N)
return 6;
return M(N - 1) + F(N - 1);
}
}
}