算法

递归-3 计算多个数字

2017-03-16  本文已影响0人  路灯下的黑猫H

//

//ViewController.m

//CocoTest_1

//

//Created by S u p e r m a n on 2017/3/14.

//Copyright © 2017年张浩. All rights reserved.

//

#import"ViewController.h"

- (void)viewDidLoad {

[superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

printf("sum = %d",numOfSum(4,5));

}

/**

*

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时

共有5个数相加),几个数相加有键盘控制。

f(n) = f(n-1) + aa...a(说明这里有n个a);

*/

intnumOfSum(intn,intnum){

if(n ==1) {

returnnum;

}else{

returnnumOfSum(n-1,num) + n_mum(n,num);

}

}

intn_mum(intn,intnum) {

intsum =0;

while(n>0) {

sum = sum*10+num;

n--;

}

returnsum;

}

/**

*

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时

共有5个数相加),几个数相加有键盘控制。

f(n) = f(n-1) + aa...a(说明这里有n个a);

f(4,2) = f(3,2) + 2222 = f(3,2) + (f(3,2)- f(2,2))*10 + 2;

f(n,k) = f(n-1,k) + (f(n-1,k)-f(n-2,k))*10 + k

*/

// n: n个数字k:1~9的数

inttest2(intn,intk) {

if(n ==0) {

return0;

}

if(n ==1) {

returnk;

}

returntest2(n-1, k) + (test2(n-1, k)-test2(n-2, k))*10+ k;

}

@end

上一篇 下一篇

猜你喜欢

热点阅读