关于算法与OO

10-05-15 purh
题目:"农场一头小母牛,每年生头小母牛,
母牛五岁产母牛,二十年上多少牛?"
要求:分别从算法和OO的角度实现下,看其中区别?

[该贴被purh于2010-05-15 10:15修改过]

1
flyingwalf
2010-05-16 22:02
写了个OO的,随便讨论下,呵呵


import java.util.Vector;

public class Farm
{
Vector<Cow> cows;

class Cow
{
private int age;

public Cow()
{
age = 0;
}

public Cow(int _age)
{
age = _age;
}

public void passAYear()
{
if(this.age >= 5)
{
Cow cow = new Cow();
cows.add(cow);
}
this.age++;
}
}

public Farm()
{
cows = new Vector();

Cow cow = new Cow(5);

cows.add(cow);
}

public int getNumOfCowsByYear(int year)
{
for(int i = 0; i < year; i++)
{
for(int j=0; j < cows.size(); j++)
{
Cow cow = cows.get(j);
cow.passAYear();
}
}

return cows.size();
}


public static void main(String[] args)
{
Farm farm = new Farm();
int year = 20;
int num = farm.getNumOfCowsByYear(year);

System.out.println("After " + year + " years, there're " + num + " cows in the farm.");
}
}

purh
2010-05-25 16:38
递归实现思路:f(n)=f(n-1)+f(n-4)
对比来讲OO好像在纯计算方面稍显苍白

[该贴被purh于2010-05-25 16:48修改过]

banq
2010-05-26 08:12
2010年05月25日 16:38 "purh"的内容
对比来讲OO好像在纯计算方面稍显苍白 ...


OO是一种方法来,粒度比较粗,而算法是一种内聚性很强的方法,如果你在事物内部发行了代表规律的算法,那么就用算法表达;如果你无法发现,就以事物外部特征来形象表述它,这就是象数区别。

beepbug
2010-06-19 18:43
算法与OO,是不同层面的东西,没法拿来比较。
算法,是如何通过代码来解决现实问题的办法。它是很广义的东西,并不仅仅是回溯、排序、归并、查找等东西。
OO是一种代码编写风格。

你要比,也只能这样比:就这一具体问题,SP方式下与OOP方式下,哪个能实现较好的算法?

amao
2010-06-21 14:35
就我的理解写出来的OO。

public interface Algorithm {
    long getFn(int n);
}

public class Cow implements Algorithm {
    public long getFn(int n) {
        if (n > 4) {
            return getFn(n - 1) + getFn(n - 4);
        } else {
            return 1;
        }
    }

    public static void main(String[] args) {
        final int i = 20;
        final long fn = new Cow().getFn(i);
        System.out.println("f(" + i + "): " + fn);
    }
}
<p class="indent">

猜你喜欢