Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Java (http://www.velocityreviews.com/forums/f30-java.html)
-   -   Displaying factors using Recursion (http://www.velocityreviews.com/forums/t361219-displaying-factors-using-recursion.html)

smshinde@gmail.com 07-29-2006 07:07 AM

Displaying factors using Recursion
 
Hello,
I have written a Recursive function to display integer factors of an
integer.
I am not getting the exit condition for recursion.
Can anyone suggest one.

class Factorize{
static void factorize(int n){
int i=2;
while(true){

if (n%i==0)
{
System.out.print(i+",");
n=n/i;
factorize(n);
}
else i++;
}
}

public static void main(String args[]) {
int n= Integer.parseInt(args[0]);
System.out.println("Genereting Perfect Numbers....");
System.out.print(1+",");
PerfectNumber.factorize(n);
}
}


Output:
C:\sameer>java Factorize 100
Genereting Perfect Numbers....
1,2,2,5,5,
It hangs after this.


Andrey Kuznetsov 07-29-2006 07:14 AM

Re: Displaying factors using Recursion
 
> I have written a Recursive function to display integer factors of an
> integer.
> I am not getting the exit condition for recursion.
> Can anyone suggest one.
>
> class Factorize{
> static void factorize(int n){
> int i=2;
> while(true){
>
> if (n%i==0)
> {
> System.out.print(i+",");
> n=n/i;
> factorize(n);
> }
> else i++;
> }
> }


there are 2 conditions, i must be lesser than or equals to n and n must be
greater than 0.

Andrey

--
http://uio.imagero.com Unified I/O for Java
http://reader.imagero.com Java image reader
http://jgui.imagero.com Java GUI components and utilities



Stefan Ram 07-29-2006 07:46 AM

Re: Displaying factors using Recursion
 
smshinde@gmail.com writes:
>Can anyone suggest one.


public class Main
{
static void printFactorsOf( final int n )
{ boolean found = false; int factor;
for( factor = 2; factor <= n && !( found = n % factor == 0 ); ++factor );
if( found )
{ java.lang.System.out.print( "*" + factor );
printFactorsOf( n / factor ); }}

public static void printTheFactorsOf( final int n )
{ java.lang.System.out.print( "1" );
printFactorsOf( n );
java.lang.System.out.println( "." ); }

public static void main( final java.lang.String[] commandLineArguments )
{ for( int n = 1; n < 20; ++n )
{ java.lang.System.out.print( n + ": " ); printTheFactorsOf( n ); }}}




All times are GMT. The time now is 09:53 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.