mport javax.swing.JOptionPane;public class YiShuFenJie{
public static void main(String[] args){
String intString = JOptionPane.showInputDialog("Enter a number");
int n =Integer.parseInt(intString);
String output = "";
output += n + "=" + foo(n);
JOptionPane.showMessageDialog(null, output);
}
public static double foo(int i){
for(int k = 2; k <= i; k++){
if(k == i)
return k;
if(k < i && i % k == 0)
return k * foo(i / k);
}
} //编译显示这行缺少返回语句!! 为什么啊???我弄了一晚上了,高手救救我啊!!!
}
public static void main(String[] args){
String intString = JOptionPane.showInputDialog("Enter a number");
int n =Integer.parseInt(intString);
String output = "";
output += n + "=" + foo(n);
JOptionPane.showMessageDialog(null, output);
}
public static double foo(int i){
for(int k = 2; k <= i; k++){
if(k == i)
return k;
if(k < i && i % k == 0)
return k * foo(i / k);
}
} //编译显示这行缺少返回语句!! 为什么啊???我弄了一晚上了,高手救救我啊!!!
}
return k;if(k < i && i % k == 0)
return k * foo(i / k);自己看看 哈
如果 k==i 返回 k ,如果 k < i && i % k == 0 返回k * foo(i / k);
如果都不是呢? 返回什么? 当然没了 你要在 后面再加一个返回操作 处理都不是的情况
if(k < i && i % k == 0)
return k * foo(i / k);
}
后面加一个return语句呀。
函数的返回类型是 double 你在后面加哥 return 0; 就可以了 注意外面别被什么条件语句包围,
你之前的代码因为都被if包围了 也就是说只有 if 条件发生的时候菜返回 要么不能返回
private int [] array=new int[100];
private int total ;
public HandleNum(int total){
this.total=total;
for(int i=0;i<array.length;i++)
array[i]=0;
}
public void print(int dep){
for(int i=1;i<dep;i++)
System.out.print(array[i]);
System.out.println(" ");
}
//k为选择的下界
public void find(int k ,int sum,int dep){
if(sum==total){
array[dep]=k;
print(dep);
return;
}
else if(sum>total)
return ;
else {
for(int b=k;b<(total/sum+1);b++)
{
array[dep]=b;
find(b,sum*b,dep+1);
}
}
}
public static void main(String [] args){
HandleNum hn=new HandleNum(90);
hn.find(2,1,1);
}}
public static void handle(int i){
if(i==1)
System.out.println("1");
else
{
for(int j=2;j<=i;j++){
int p=0;
p=i/j; if(p*j==i){
if(p==1){
System.out.println(j);
return ;
}
System.out.println(j);
handle(p);
break;
}
}
}
}
public static void main(String []args){ ChaiFen.handle(90);
}}
这个吧?
#include <iostream>
using namespace std;double foo(int i)
{
for(int k = 2; k <= i; k++)
{
if(k == i)
{
cout << k << endl;
return k;
}
else if(k < i && i % k == 0)
{
cout << k << " * ";//这里记得输出数字时后面接着输出个“*”这样就是楼主要的结果了。
return k * foo(i / k);
}
}
cout << i << endl;
return i;
}
int main(int argc, char* argv[])
{
int i = 90;
cout << i << " = ";
foo(i); return 0;
}//输出结果为90 = 2 * 3 * 3 * 5
LZ,你只要把cout << ……,这些改成JAVA里面的输出函数就可以了,我这是用C++写的,java有点不太记得。
public static void main(String[] args){
String intString = JOptionPane.showInputDialog("Enter a number");
int n =Integer.parseInt(intString);String output = "";
output += n + "=" + foo(n);JOptionPane.showMessageDialog(null, output);
} public static double foo(int i){
for(int k = 2; k <= i; k++){
if(k == i)
return k;else
return k * foo(i / k);
}