根据等式p(n) = p(n-1)+13
p(0)=19,因此第一个元素p(1)等于p(1-1)+13,也就是19+13=32,第二个元素p(2)等于p(2-1)+13=32+13=45,以此类推,需要如何用python和java编写一个包含迭代和递归函数的程序来打印前100个元素。从1开始。
输出结果
建一个test类,添加如下代码:
public class test {
//迭代
public static int dd(int n){
int a = 19;
int t=a;
for(int i=2;i<=n;i++){
t = a+13;
a = t;
}
return t;
}
//递归
public static int dg(int n){
if(n==1)
return 19;
else
return dg(n-1)+13;
}
public static void main(String[] args) {
System.out.println("n\t Iterative\t Recursive");
for(int i=1;i<=4;i++){
System.out.print(i);
System.out.print("\t ");
System.out.printf("%-9d",dd(i));
System.out.print("\t ");
System.out.printf("%-9d",dg(i));
System.out.println();
}
}
}
public static int getNum(int num){
if(num==0){
return 19;
}else {
return getNum(num-1)+13;
}
}
python递归实现:
p0=19
def cmp(x):
if x==0:
return p0
return cmp(x-1)+13
print('{}{:>20}{:>20}'.format('n', 'Iterative', 'Recursive'))
for i in range(1,101):
print(f'{i}{cmp(i):>20}{cmp(i):>20}')
Python 代码如下,有点类似斐波那契数列原理
def p(n: int)->int:
a = 19
print(a, end='\t')
for i in range(1, n):
a, b = a + 13, a
print(a, end="\t")
return
if __name__ == '__main__':
p(100)
19 32 45 58 71 84 97 110 123 136 149 162 175 188 201 214 227 240 253 266 279 292 305 318 331 344 357 370 383 396 409 422 435 448 461 474 487 500 513 526 539 552 565 578 591 604 617 630 643 656 669 682 695 708 721 734 747 760 773 786 799 812 825 838 851 864 877 890 903 916 929 942 955 968 981 994 1007 1020 1033 1046 1059 1072 1085 1098 1111 1124 1137 1150 1163 1176 1189 1202 1215 1228 1241 1254 1267 1280 1293 1306
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!